Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

코린이 탈출기

[모의 SW 역량테스트][Python] 보물상자 비밀번호 본문

문제 풀이/Simulation

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

명란파스타 2020. 9. 16. 01:48

문제 바로가기

 

SW Expert Academy

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

swexpertacademy.com

코드 유목민...

여러가지 써보는 중이다..

얼마전 카카오 코테에서 파이썬으로 했으면 고생고생을 안해도 될 문제가 있었어서 파이썬에 꽂혔당 ㅎ

아직은 익숙하지 않아서 문법 같은 건 그때그때 찾아보면서 하고있다

 

<문제 풀이 Logic>

1. 보물상자의 면이 4개이므로 전체 숫자를 4로 나눠서 rotate_num을 구한다. 

2. 4개의 영역으로 숫자들을 잘라서 splitTreasure에 저장한다. -> rotate. 한 칸씩 시계방향으로 이동

3. 2번을 (rotate_num-1)만큼 반복

4. 중복 제거를 해야하므로 splitTreasure에 set을 취한 후 문제에서 원하는 번째의 원소를 출력하면 된다.

 

파이썬 내부에 16진수를 10진수로 바꾸거나, 중복 제거 등 기능이 대부분 있어서 코드를 훨씬 단축시킬 수 있었다.

이러한 함수나 기능을 익히면 더 쓰기 편해질 것 같다 !!!

 

 

 

-전체 코드-

def rotate(old_str):
    new_str= ""

    new_str += old_str[len(old_str)-1]
    for i in range(0, len(old_str)-1):
        new_str += old_str[i]
    
    return new_str

T = int(input())
# 여러개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
for test_case in range(1, T + 1):
    N, K = map(int, input().split())
    TreasureStr = input()
    answerList = []
    splitTreasure = []
    rotate_num = int(N/4)
    # print(TreasureStr)
    for r in range(0, rotate_num):
        if(r != 0):
            TreasureStr = rotate(TreasureStr)
        for i in range(0, N-(rotate_num-1), rotate_num):
            splitTreasure.append(TreasureStr[i:i+rotate_num])
        
        # print(splitTreasure)
    
    resultArr = list(set(splitTreasure))
    resultArr.sort(reverse=True)
    # print(resultArr)
    result = int(resultArr[K-1], 16)
    print("#" + str(test_case) + " " + str(result))

'문제 풀이 > Simulation' 카테고리의 다른 글

[모의 SW 역량테스트][Python] 벽돌 깨기  (0) 2020.09.18
[백준 2636][Python] 치즈  (0) 2020.09.18
[백준 16235] 나무 재테크  (0) 2020.08.10
[백준 13460] 구슬 탈출 2  (0) 2020.08.05
[백준 17779] 게리맨더링 2  (0) 2020.08.02