TIL/알고리즘 공부

백준 3052번 Swift 알고리즘 연습

여의도사노비 2022. 4. 16. 18:24
728x90

알고리즘 공부를 시작할 때 주말 말고 평일에만 공부하겠다 다짐했건만,

저번주 이번주 너무 공부를 못해서 그냥 하나 풀어봄 ^^;

 

* 3052번

 

1) 

var insert1 = Int(readLine()!)!
var insert2 = Int(readLine()!)!
var insert3 = Int(readLine()!)!
var insert4 = Int(readLine()!)!
var insert5 = Int(readLine()!)!
var insert6 = Int(readLine()!)!
var insert7 = Int(readLine()!)!
var insert8 = Int(readLine()!)!
var insert9 = Int(readLine()!)!
var insert10 = Int(readLine()!)!

var value = Set<Int>()
var array = [insert1,insert2,insert3,insert4,insert5,insert6,insert7,insert8,insert9,insert10]


for i in 0...9 {
    value.insert(array[Int(String(i))!] % 42)
}

print(value.count)

 

이번 문제는 금방 풀긴했다. 그런데.

  • 처음에는 인서트 값을 배열에 전부 받아놓고
  • 배열 원소끼리 하나하나 비교를 통해 중복된 값은 제외하고 카운트를 해보려고 했다.
  • 하지만 생각보다 중복되는 케이스가 많이 생기고, 중복 케이스를 전부 제외해줄 알고리즘 흐름을 찾지 못했다.
  • 그래서 생각을 바꾸고 그냥 '중복되지 않고 남아있는 숫자'의 개수에만 집중하였다.
  • 그렇게 생각난 것이 Set.
  • Set은 아무리 많은 값을 넣어줘도 같은 형태의 같은 값이라면 중복으로 처리되기에
  • Set을 사용하여 값을 전부 저장하고 카운트 개수를 세었다.
  • 근데 이번 문제를 풀면서 가장 마음에 안드는 점은 readLine()을 for문으로 10번 실행하는 것에 실패했다는 것이다.
  • 단순 10번 실행은 가능하나 insert1..10처럼 매번 특정 변수 지정하여 실행하는 것은 어떻게 하는지 도저히 모르겠다 ㅠㅠ
  • 그래서 추후 iOS 고수분들에게 물어볼 예정...

 

 

정리(Today I Learned)

  1. Array와 Set의 가장 큰 차이는 중복값이 저장 되는지 안되는지의 차이!
  2. readLine()를 실행할때마다 새로운 변수에 값을 저장시킬 수 있는 방법이 무엇일까를 아직 잘 모르겠다. (물어볼 예정)