-
[Swift] 백준 알고리즘 #3052기초라고 생각되는 것/문제풀이 2022. 2. 19. 23:24반응형
문제
두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.
수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다. N은 0보다 크거나 같고, 99보다 작거나 같은 정수이다.
출력
첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.
내가 제출한 코드
1. Array
import Foundation var numberArray: Array<Int> = [] for _ in 0...9 { let input = Int(readLine()!)! let number = input % 42 if !numberArray.contains(number) { numberArray.append(number) } } print(numberArray.count)
2. Set
import Foundation var numberSet: Set<Int> = [] var count = 0 for _ in 0...9 { let input = Int(readLine()!)! let number = input % 42 numberSet.insert(number) } print(numberSet.count)
생각정리
1. 42로 나눈 나머지의 값들을 Array로 저장을 해야한다.
2. 추가 전에 배열 안에 같은 값이 있는지 확인한다. (필터링)3. 결과 값을 출력한다
이렇게 Array를 사용해서 문제를 풀고 다른 사람들은 어떤 식으로 했을지 궁금해서 검색을 해본 결과 ....!!
Set를 사용해서 문제를 푼 사람들이 많았다 ..
1. 숫자든 문자든 중복을 없엔다.
2. 삽입하는 순서에 상관없이 정렬되서 입력이 된다.
이 특징을 모두 만족시킬 수 있는 자료구조는 이진 트리
set은 Red-Black 트리 구조의 Collectionytype인걸 배우게 됐다.
Swift를 접하기 전 기초 언어로는 C언어를 공부했고, 뒤이어 C++ 공부를 하면서 접한 기억이 있었다.
그치만 한 두번 사용한 것으로는 머리 속에서 자연스럽게 꺼내지지않았다.
역시 같은 문제를 풀더라도 다른 사람들의 코드를 찾아보는 것은 항상 도움이 되는 것 같다'기초라고 생각되는 것 > 문제풀이' 카테고리의 다른 글
[Swift] 백준 알고리즘 #8959 (0) 2022.02.20 [Swift] 백준 알고리즘 #1546 (0) 2022.02.20 [Swift] 백준 알고리즘 #1110 (0) 2022.02.13 [Swift] 백준 알고리즘 #10952 (0) 2022.01.17 [Swift] 백준 알고리즘 #2742 (0) 2022.01.11