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]))

https://epser.tistory.com/8

 

[모의 SW 역량 테스트] 5658 보물상자 비밀번호 (Python)

출처 https://swexpertacademy.com/main/code/problem/problemDetail.do 문제 각 변에 다음과 같이 16진수 숫자(0~F)가 적혀 있는 보물상자가 있다. 보물 상자의 뚜껑은 시계방향으로 돌릴 수 있고, 한 번 돌릴..

epser.tistory.com


 


삼성 채용 시즌에 맞춰 풀어보기 시작한다.

+ Recent posts