반응형
반응형
import Foundation

/*
 동전 종류 N
 가치의 합 K
 
 K원을 만드는데 필요한 동전 개수의 최솟값은?
 */

let firstInputItems = readLine()!.components(separatedBy: " ").map { Int($0)! }
let kinds = firstInputItems[0]
var sum = firstInputItems[1]
var elements = [Int]()

elements = Range(0 ... kinds - 1)
  .map { _ in Int(readLine()!)! }
  .reversed()

var count = 0

elements
  .forEach { element in
    let value = sum / element
    
    if value > 0 {
      count += value
      sum -= element * value
    }
    
    if sum == 0 {
      return
    }
  }

print(count)

 

해설

입력값을 받아놓고 큰 값부터 처리하기 위해 reversed()를 사용했고 큰값으로 나눈 몫을 동전의 총 가치에서 빼주는 작업을 sum이 0이 될때 까지 진행합니다.

반응형

알고리즘 문제를 풀어보려고 하는데 문제를 풀어도 어떤식으로 제출을 해야 하는지에 대한 글입니다.

 

1. 문제 풀기 위한 Xcode 세팅

1. 먼저 xcode를 열어 new project를 만듭니다.

2. macOS에서 Commend Line Tool을 선택합니다.

3. main.swift 파일에서 문제를 푸시면 됩니다!

 

Playground로 하지 않고 Command Line Tool로 하는 이유는 아래를 보면 알 수 있습니다.

 

2. 입력값을 받는 문제

문제중에 입력값을 받는 문제들이 있습니다. 이 입력값을 받기 위해 일반 Playground를 사용하지 않고 Command Line Tool을 사용합니다.

 

입력값을 받기 위해서는 readLine()을 호출하면 됩니다.

실행을 하게되면 먼저

1. Hello, World!가 찍힘

2. 해당 콘솔창에 insert!!!를 입력

3. 옵셔널로 insert!!!가 print

 

가 되는 것을 볼 수 있습니다.

 

반응형

'Algorithm > BackJoon' 카테고리의 다른 글

[Swift] 백준 11047 - 동전 0  (0) 2022.01.24
[Swift] 백준 11399 - ATM  (0) 2022.01.23
[Swift] 백준 2839 - 설탕 배달  (0) 2022.01.23
import Foundation

let count = readLine()
let insertPersonTimes = readLine()

var personTimes = insertPersonTimes!.components(separatedBy: " ").map { Int($0)! }

personTimes.sort()
var sum = 0
for i in 0 ..< personTimes.count {
  sum += personTimes[i] * (personTimes.count - i)
}

print(sum)

2개의 입력값을 받는 문제입니다 사실 첫번째의 count는 안받아도 될거 같은데... ㅎㅎ

ios 개발을 하면서 커맨드 라인으로 입력값을 받은 적이 없어 약간 해맸네요...

Xcode Swift로 커맨드 라인 입력값 받기

해설

굳이 이전의 값들을 따로 빼서 합을 구해주지 않고 최종적으로 한 사람이 몇 명에게 시간을 주느냐에 관점으로 접근했습니다.

간단하게 첫번째 사람은 한번, 두번째 사람은 두번 ... 이런식이기 때문에 자신이 걸리는 시간 * (인원수 - 자신의 순번) 으로 처리했습니다.

반응형

시간 날때마다 알고리즘 문제를 풀어볼까 합니다! 실무에 중요한 그리디 유형부터 진행할 예정입니다!

 

var amount = Int(readLine()!)!
var bag = 0

while(amount >= 0) {
    if amount % 5 == 0 {
        bag += amount / 5
        print(bag)
        break
    }
    bag += 1
    amount -= 3

    if 1..<3 ~= amount {
        print(-1)
        break
    }
}

while문을 사용하지 않고서는 도저히 쉽게 해결할 방법이 안떠올라 결국 while문으로 풀게 됬네요.

 

해설

그냥 최대한 단순하게 5로 나누어 떨어질 때 까지 3을 빼주며 1봉지씩 추가하는 방법입니다. while문 도중 3씩 빼고 있는데 남은 수가 1이나 2가 될 경우 -1을 출력합니다.

 

반응형

+ Recent posts