본문 바로가기
Algorithm

[Algorithm] Swift 백준 3040번

by ykr0919 2023. 11. 7.

https://www.acmicpc.net/problem/3040

 

3040번: 백설 공주와 일곱 난쟁이

매일 매일 일곱 난쟁이는 광산으로 일을 하러 간다. 난쟁이가 일을 하는 동안 백설공주는 그들을 위해 저녁 식사를 준비한다. 백설공주는 의자 일곱개, 접시 일곱개, 나이프 일곱개를 준비한다.

www.acmicpc.net

 

문제 접근 

9번의 숫자를 입력받고, 입력받은 숫자를 다 더하면 합은 100이 넘을 것이다. (7 난쟁이의 합이 100이기 때문에) 그럼 9 난쟁이의 합에 100을 빼주고 남은 숫자가 만약 40이라면 9개의 숫자 중 40을 만들 수 있는 2가지 숫자를 걸러주고 나머지 7개의 숫자를 보여주면 되지 않을까?? 

 

var sum = 0
var arr: [Int] = []
var selectArr: [Int] = []

for _ in 1...9 {
    let input = Int(readLine()!)!
    arr.append(input)
    sum += input
}
for i in 0..<arr.count {
    for j in i+1..<arr.count {
        if sum - (arr[i] + arr[j]) == 100 {
            selectArr = arr.filter { $0 != arr[i] && $0 != arr[j] }
            break
        }
    }
}
for dwarf in arr {
    if selectArr.contains(dwarf) {
        print(dwarf)
    }
}

 

 

 

이중 for문을 이용해서 모든 (arr [ i ] + arr [ j ] ) 경우를 만들어보고 if문을 이용하여 sum에서 뺐을 때 100이 되는 경우를 찾는다. 

그 후 arr 배열에 filter를 이용해서 데이터를 추출한다.  arr 배열의 처음값부터 비교하여 arr [ i ]과 arr [ j ]과 다르다면 selectArr에 넣어준다. 여기서 $0가 어떻게 나온 건지 모르겠다면 보고 오자!! Swift의 $0 구문은 어떻게 나온걸까?  

'Algorithm' 카테고리의 다른 글

[Algorithm] Swift 백준 1157번  (3) 2024.01.09
[Algorithm] Swift 백준 14467번  (3) 2023.11.18
[Algorithm] Swift 백준 20546번  (2) 2023.11.16
[Algorithm] Swift 백준 1292번  (1) 2023.11.09
[Algorithm] Swift 백준 1316번  (3) 2023.11.04