TIL/알고리즘 공부

백준 2739, 10950번 Swift 알고리즘 연습

여의도사노비 2022. 3. 24. 23:01
728x90

for 문이 익숙하지가 않아서 그런지... 은근히 시간을 많이 잡아먹었다. 여러번 풀어보면서 익숙해져야 할듯!

 

* 2739번

 

1)

let a: Int = Int(readLine()!)!
for i in 1...9 {
  print("\(a) * \(i) = \(a * i)")
}

최대한 간단하게 풀어보고자 노력중이다.

 

  • for문을 처음 작성할 때 헷갈렸던 점은, for 문에서 쓰이는 i와 같은 임시(?)변수를 정의해주지 않고 바로 사용 가능하냐는 것이었다. 변수에 대한 정의를 계속 머릿속에 염두해두고 있다보니 i라는 변수를 특정 문자열로 정의해주지 않고 써도 될지에 고민했었음.

 

* 10950번

 

1)

let a: Int = Int(readLine()!)!
for _ in 1...a{
  var b: [Int] = []
  b = readLine()!.split(separator: " ").map{Int($0)!}
  print(b[0] + b[1])
}

이 문제에서 시간이 많이 들었다...

  • 이 문제는 일단 문제 자체를 제대로 이해하지 못했었다.
  • 1) 테스트케이스 갯수를 먼저 입력.
  • 2) 테스트케이스 갯수 만큼 띄어쓰기 적용하여 값 입력
  • 3) 예를들면 5(테스트케이스) 입력 후 1 1 엔터 2 2 엔터 3 3 엔터 4 4 엔터 5 5 엔터
  • 4) 이렇게 했을때 답이 출력되게 만드는 문제인줄 알았다.
  • 그래서 readLine()선언을 n번 만큼 반복문으로 돌리고 입력값에 대한 출력값도 5번이 print될 수 있도록 계속 시도하였으나... 입력문을 n번 반복시키는건 아직 내 능력밖의 일인가 보다...? 잘 모르겠다 ㅠㅠ 나중에 도전해봐야겠다.
  • 입력 -> 출력 -> 입력 -> 출력 ... n번 반복으로 고민하면 풀 수 있을 문제이다.
  • 또한 이 문제에 나온 for _ (언더바, 와일드카드)의 개념을 이해하고자 for문 내용을 글로 정리하였다.

 

 

정리(Today I Learned)

  1. 문제를 쉽게 바라보면 답도 쉽게 나온다!
  2. for문은 swift 내에서 대체될 수 있는 요소들이 많아서 생각보다 잘 안쓰이는 것 같기도 하다
  3. 와일드카드는 말그대로 어떤 요소가 올지 모르는 것을 대비하여 사용하는 식별자이다.