TIL/알고리즘 공부

백준 2438, 2439번 Swift 알고리즘 연습

여의도사노비 2022. 3. 25. 17:18
728x90

금요일이라 놀고 싶지만 알고리즘은  풀고 놀아야겠다 싶어서 for문을 마져푸는데 생각 이상으로 헷갈린다...

고민하다가 모르겠어서 찾아보면 아 맞네 이걸 왜 몰랐지? 싶은 이 기분.. 앞으로 현타에 더 익숙해져야겠다.

 

* 2438번

 

1)

let a = Int(readLine()!)!

for i in 1...a {
   for _ in 1...i {
       print("*", terminator: "")
   }
  print("")
}

여기서부터 좀 헷갈렸음..!

  • 어떻게 해야 프린트를 여러번 찍어내고 출력 단락을 바꿀 수 있을까 고민을 했다. 결국 for 문을 두 번 겹쳐서 사용하자는 결론이 나긴 했지만 뭔가 바로 생각난 것도 아니고 이것저것 고민을 좀 오래해서 그런지 결론도 찝찝했다.
  • 근데 여기서 for가 한 번더 겹쳐져서 3중 for문이 나온다 생각하면 엄청 머리 아플거 같다.

 

* 2439번

 

1)

let a = Int(readLine()!)!

for i in 1...a {
    for _ in 0..<(a-i) {
        print(" ", terminator: "")
    }
    for _ in 0..<i {
        print("*", terminator: "")
    }
    print()
}

이게 제일 어려웠음 ㅠㅠ

  • 이 문제는 계속 풀리지를 않았다 처음엔... 결국 for문 안에 2개의 for문을 작성하는 것까지 걸린 시간도 상당히 오래걸렸고.. 이 마저도 처음엔 맘처럼 값이 나오지 않아 시행착오를 여러번 거쳤다.
  • 그런데 그렇게 시행착오를 걸쳐서 나온 결과 치고는 마음에 들지 않는다..
  • 그래서 이것저것 찾아보니 strider라던지 이 외의 다른 방식으로 푼 코드들도 있더라.
  • 이전에 for문 풀며 배운 terminator나 strider등의 용어들은 추후 deep dive에 정리할 예정이다.

 

 

정리(Today I Learned)

  1. for문 안에 for문이 들어갈 수 있다. 그것도 2개나 들어갈 수 있다.
  2. strider, terminator 등의 용어 정리