https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
내 풀이
def solution():
answer=[]
t = int(input())
for i in range(t):
n,k = map(int,input().split())
m = input()
answer.clear()
for _ in range(n//3):
for j in range(0,len(m),n//4):
answer.append(m[j:j+(n//4)])
last_chr = m[-1]
m=list(m)
m[1:]=m[0:len(m)-1]
m[0]=last_chr
m =''.join(m)
for p in range(len(answer)):
answer[p]='0x' + answer[p]
answer =list(set(answer))
answer.sort(reverse=True)
print(f'#{i+1}',int(answer[k-1],16))
solution()
최초에 문제풀 때 무조건 3번돌면 똑같은 값이 돌아온다고 생각해서 삽질했다..
다른사람의 풀이
T = int(input())
for t in range(T):
N, K = map(int,input().split())
pw = list(map(str,input()))
cnt = N // 4 # 한 변당 번호 개수 = rotate수
arr = [] # 회전 시킨 후 16진수 번호가 저장 될 리스트
for i in range(cnt): # rotate 수 만큼 회전시킴
pop = pw.pop() #리스트 끝 부분을 맨 앞으로 이동 시키면 한번 회전 완료됨
pw.insert(0,pop)
for j in range(0,N,cnt): # 리스트 내에서 각각 떨어져있는 요소를 하나의 번호로 합침
a = ''
for k in range(j,j+cnt):
a += pw[k]
arr.append(a)
new_arr = set(arr) # 중복을 허용치 않는 자료구조 set 활용
answer = [] # 10진수로 변환된 숫자가 들어갈 리스트
for num in new_arr: # 16진수 -> 10 진수로 변환
answer.append(int(num,16))
sorted_answer = sorted(answer,reverse=True) #내림차순 정렬
print('#{} {}'.format(t+1,sorted_answer[K-1]))
[모의 SW 역량 테스트] 5658 보물상자 비밀번호 (Python)
출처 https://swexpertacademy.com/main/code/problem/problemDetail.do 문제 각 변에 다음과 같이 16진수 숫자(0~F)가 적혀 있는 보물상자가 있다. 보물 상자의 뚜껑은 시계방향으로 돌릴 수 있고, 한 번 돌릴..
epser.tistory.com
삼성 채용 시즌에 맞춰 풀어보기 시작한다.