본문 바로가기
개발/SWEA (D1) 문제 풀이

SW Expert Academy - 2043. 서랍의 비밀번호(D1)

by v너굴이v 2022. 11. 8.

출처 - https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5QJ_8KAx8DFAUq&categoryId=AV5QJ_8KAx8DFAUq&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=2

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

<나의 풀이>

문제만 읽어보았을 때, 단순하게 P - K + 1을 하면 되는 것 아닌가 하는 생각이 들었다.

그러나 이는 P가 K보다 크거나 같을 때(P>=K)만 사용이 가능한 식이다.

 

주어진 테스트 케이스는 이것에 해당하기 때문에 단순하게 저 식만 작성해주면 문제는 통과하지만,

문제의 진정한 의미는 P가 K보다 작을 때도 고려해야 한다고 생각한다.

 

예를 들어서 P가 100이고 K가 123인 경우, (P <K)

123부터 999까지 탐색을 하고, 다시 000부터 100까지 탐색을 해야 한다.

 

일단 ~때와 ~때를 각각 고려해야 하기 때문에 조건문을 활용하면 될 듯하다.

이때 입력받는 두 가지 값은 정수이며 각각 P와 K이다.

P , K = map(int, input().split())
if P >= K:
    print(P-K+1)
else:
    print(?)

이제 P <K일 경우, P에 999를 더해주고 K를 뺀 후 1을 더해주면 된다.

따라서 완성된 코드는 다음과 같다.

P , K = map(int, input().split())
if P >= K:
    print(P-K+1)
else:
    print(P+1000-K)

이를 반복문을 활용하여 카운트하는 방법도 보았는데, 코딩적으로(?) 접근한 것이 인상적이었다.

나는 아직 문제 풀이를 할 때 수학적 연산 방법을 위주로 접근하는데, 반복문을 활용했다는 것에 반성하게 되었다.

조금 더 파이썬 문법을 활용하여 풀이해보려고 노력해보자!

댓글