[코딩테스트][SWEA] 🔥 SWEA 5658번 "보물상자 비밀번호" 문제: Python으로 완벽 해결하기! 🔥

김상욱·2024년 9월 5일
0
post-thumbnail

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo

🕒 Python 풀이시간: 20분

from collections import deque

for tc in range(1,int(input())+1):
    N,K=map(int,input().split())
    arr=deque(list(input()))
    sideNum=N//4
    allCase=set()
    for _ in range(sideNum):
        arr.appendleft(arr.pop())
        for i in range(0,N,sideNum):
            allCase.add(int("0x"+"".join(list(arr)[i:i+sideNum]),16))
    print("#"+str(tc)+" "+str(sorted(allCase,reverse=True)[K-1]))

보물상자 비밀번호: K번째 큰 수를 찾아라! 🔒💎

보물상자의 비밀번호 중에 K번째 큰 수를 찾는 문제이다. 매우 간단하게 큐와 set, 그리고 정렬을 통해 풀 수 있다. 예제에서 주어졌듯이 사이드에 있는 숫자의 수만큼만 회전시키면 즉 사각형이기 때문에 총 N개의 수를 4로 나눈 수만큼만 뒤에서 뺏다가 앞으로 넣으면 시계방향 회전이 이루어진다. 이러한 수들을 전부 찾아서 16진수를 10진수로 변환하여 배열에 넣고 내림차순으로 정렬해서 K번째 수를 출력하면 된다.

이렇게 Python로 SWEA의 "보물상자 비밀번호" 문제를 해결해보았습니다. 코드와 개념 설명을 참고하여 문제를 해결하는 데 도움이 되셨길 바랍니다! 😊

0개의 댓글