TIL/알고리즘 공부

백준 18108, 10430, 2588번 Swift 알고리즘 연습

여의도사노비 2022. 3. 17. 23:10
728x90

백준 단계별 문제 모음집 중 입출력과 사칙연산 단계는 기존 문제들에 아주 약간의 변화로 응용이 들어가면 정답을 맞출 수 있었다.

 

* 18108번

 

1)

let year = readLine()!

print(Int(year)! - 543)

처음엔 좀 꼬여있는 문제가 나올줄 알고 당황했는데 간단했다 ^-^

 

* 10430번

 

1)

import Foundation
var lineArr: [String]
var line = readLine()!
lineArr = line.components(separatedBy: " ")
print((Int(lineArr[0])! + Int(lineArr[1])!) % Int(lineArr[2])!)
print(((Int(lineArr[0])! % Int(lineArr[2])!) + (Int(lineArr[1])! % Int(lineArr[2])!)) % Int(lineArr[2])!)
print((Int(lineArr[0])! * Int(lineArr[1])!) % Int(lineArr[2])!)
print(((Int(lineArr[0])! % Int(lineArr[2])!) * (Int(lineArr[1])! % Int(lineArr[2])!)) % Int(lineArr[2])!)

10430번 문제의 경우 적는 내가 다 답답하더라.. 기존 방식 가져와서 푸느라고 이렇게 적었지만 깔끔하게 손 좀 봐야겠다 다시!

 

* 2588번

 

1)

var line1 = Int(readLine()!)!

var line2 = Int(readLine()!)!

var A: Int = (line1 * (line2 % 10))

var B: Int = (line1 * ((line2 % 100) / 10))

var C: Int = (line1 * (line2 / 100))

var D: Int = (line1 * line2)

print(A)

print(B)

print(C)

print(D)

10430번을 풀면서 너무 더럽게 푼거 같아서 2588번은 최대한 깔끔하게 풀어보고자 했다

  • 2588번 문제의 경우 정말 다양한 방식으로 해결가능 할 것 같다. line2 변수를 집합으로 만들어놓고 들어가는 인수 * line1 정수로 처리하는 방식도 가능할 것 같다.
  • readLine을 1줄, 2줄 어떻게 따로 받지? 하는 생각을 처음에 했는데.. 혹시 몰라서 그냥 변수를 두 개 선언하면 전부 받지 않을까 싶어서 진행해보았다. 그리고 놀랍게도 이 방식이 맞는것 같다. 의외로 직관적이군..!?

 

정리(Today I Learned)

  1. 클린코드는 중요하다.
  2. 일단은 다양하게 시도해보자. 의외로 나의 사고구조가 코딩의 논리구조와 비슷하게 작용하는 경우가 있다.
  3. 입출력과 사칙연산을 끝냈다! 이제 시작이지만 기분이 좋다!