반응형
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo
- 문제
긴 문자열을 이용하여 사각형을 만들 경우 생기는 작은 문자열들을 모두 모아서 내림차순으로 정렬한 결과 K번째 순서에 있는 문자열을 16진수로 바꾸는 문제이다.
- 풀이
T = int(input())
for i in range(T):
N, K = map(int, input().split())
letters = input().strip()
sideNum = N//4
madeNum = []
for l in range(sideNum):
for j in range(4):
tempNum = []
for k in range(sideNum, 0, -1):
tempNum.append(letters[(j*sideNum-k-l)])
tempStr = "".join(tempNum)
if tempStr not in madeNum:
madeNum.append(tempStr)
madeNum.sort(reverse=True)
print("#{} {}".format(i+1, int(madeNum[K-1], 16)))
N개의 숫자가 주어지면 결국 이걸로 사각형을 만들어야 하므로 한면에 있는 문자열의 길이는 sideNum(N//4)가 된다. 반복문을 두개를 겹쳐서 모든 면에 대한 문자열들을 받게 하고 (아래 그림처럼)
얻은 문자열을 하나의 리스트안에 모두 저장해주도록 한다. 이후에 내림차순으로 정렬하고 K-1번째 위치에 있는 문자열을 출력하면 된다.
- 기억할 것!
- [].sort(reverse = True)
: 내림차순으로 정렬, False로하면 오름차순으로 정렬이고 False가 Default이다
- int(x,16)
: 정수로 형변환하는데, 16진수로 형변환
- K-1
: 10번째 번호를 출력하는거면, 배열/리스트는 0부터 시작이니 9 인덱스를 출력해야 함
- input()
: SWEA는 import sys가 안됨
반응형
'Algorithm > SW Expert Academy' 카테고리의 다른 글
SWEA 1226 : 미로1(S/W 문제해결 기본)[파이썬] (0) | 2022.05.28 |
---|---|
SWEA 2005 : 파스칼의 삼각형(D2)[파이썬] (0) | 2022.05.26 |
SWEA 2063 : 중간값 찾기(D1)[파이썬] (0) | 2022.05.25 |
SWEA 1926 : 간단한 369게임(D2)[파이썬] (0) | 2022.05.13 |
SWEA 2071 : 평균값 구하기(모의 SW D1)[파이썬] (0) | 2022.05.10 |