TIL/알고리즘 공부

백준 11720번 Swift 알고리즘 연습

여의도사노비 2022. 8. 9. 16:15
728x90

상당히 오랜시간을 걸려 푼 문제이다... 왜냐하면 첫 번째로 입력하는 값이 사실은 큰 의미가 없기 때문이다...?

처음 받는 값을 5로 받든, 10으로 받든 두 번째 입력하는 문자열을 기준으로 쪼개서 인트화하면 해결이 된다.

그래서 처음 받는 값을 어떻게 연관지을지 고민을 정말 오래한것 같다 ^^...

 

이 문제를 풀면서 생각한 논리적 흐름은

  1. num으로 받는 수 만큼 for 문을 돌려서 numbers에 입력한 String value를 한 번씩 더하자!
  2. 근데 막상 해보니 num 만큼 돌리면 numbes로 입력받는 값들을 String -> Int로 변환하는 과정이 너무 번거로워진다.
  3. 그래서 애초에 numbers를 String으로 받았을때 각 밸류의 인덱스를 이용하여 쪼개자
  4. 쪼개서 더하니 값은 나오는데 앞에 기입한 num은 사실상 아무 쓸모가 없다 ^^...

 

물론 num으로 for 문을 돌리려는 처음 시도를 반영한 코드를 짤 수도 있을 것 같다.

근데 이것저것 오류가 발생하여 방향을 살짝 선회하였다.

문제를 푸는 방법은 다양하니까!

 

* 11720번

let num = readLine()!
let numbers = readLine()!
var sum = 0
for i in numbers {
    sum = sum + Int(String(i))!
}

print(sum)

 

정리(Today I Learned)

  1. 모든 조건을 사용해야 문제가 해결되지는 않는다.
  2. Int를 String으로 바꾸는 것은 간단하지만, String을 Int로 바꾸는 것은 제약이 있으니 optional 부분을 주의!