1. 숫자 배열 회전
문제 해결
1. 2차원 배열 다루기. D2
2. 90도로 회전시키는 것만 코드를 완성하면 나머지는 90도 돌린것을 또 돌리면 된다.
3. 이번에 푼 방법은 1행에 있는 모든 값을 임시배열에 넣어두고 거꾸로 해준다음 하나씩 쌓아준다.
🌧 이것 말고도 많은 방법이 있는 것으로 기억한다. 😶
소스 코드
T = int(input())
for tc in range(1, 1+T):
n = int(input())
lst = [input().split() for _ in range(n)]
# 90 도 회전
lst_90 = []
for j in range(n):
tmp = []
for i in range(n):
tmp.append(lst[i][j])
tmp.reverse()
lst_90.append(tmp)
# 180 도 회전
lst_180 = []
for j in range(n):
tmp = []
for i in range(n):
tmp.append(lst_90[i][j])
tmp.reverse()
lst_180.append(tmp)
# 270 도 회전
lst_270 = []
for j in range(n):
tmp = []
for i in range(n):
tmp.append(lst_180[i][j])
tmp.reverse()
lst_270.append(tmp)
print('#{}'.format(tc))
for i in range(n):
print(''.join(list(map(str, lst_90[i]))), ''.join(list(map(str, lst_180[i]))), ''.join(list(map(str, lst_270[i]))))
출처: SW Expert Academy
N x N 행렬이 주어질 때, 시계 방향으로 90도, 180도, 270도 회전한 모양을 출력하라. [제약 사항] N은 3 이상 7 이하이다. [입력] 가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스의 첫 번째 줄에 N이 주어지고, 다음 N 줄에는 N x N 행렬이 주어진다. [출력] 출력의 첫 줄은 '#t'로 시작하고, 다음 N줄에 걸쳐서 90도, 180도, 270도 회전한 모양을 출력한다. 입력과는 달리 출력에서는 회전한 모양 사이에만 공백이 존재함에 유의하라. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.) |
2. 쉬운 거스름돈
문제 해결
1. 탐욕법? D2
2. 큰 단위의 돈부터 작은 단위의 돈까지 차례로 주어진 거스름돈에서 빼준다.
3. 빼줄 때 몇번빼줬는지 결과를 저장해 둔다.
🌧
소스 코드
coins = [50000, 10000, 5000, 1000, 500, 100, 50, 10]
T = int(input())
for tc in range(1, T+1):
print('#{}'.format(tc))
change = int(input())
result = []
for coin in coins:
mok = change // coin
result.append(mok)
change -= mok*coin
print(' '.join(list(map(str, result))))
출처: SW Expert Academy
우리나라 화폐 ‘원’은 금액이 높은 돈을 우선적으로 계산할 때 돈의 개수가 가장 최소가 된다. S마켓에서 사용하는 돈의 종류는 다음과 같다. 50,000 원 10,000 원 5,000 원 1,000 원 500 원 100 원 50 원 10 원 S마켓에서 손님에게 거슬러 주어야 할 금액 N이 입력되면 돈의 최소 개수로 거슬러 주기 위하여 각 종류의 돈이 몇 개씩 필요한지 출력하라. [예제] N이 32850일 경우, 50,000 원 : 0개 10,000 원 : 3개 5,000 원 : 0개 1,000 원 : 2개 500 원 : 1개 100 원 : 3개 50 원 : 1개 10 원 : 0개 [제약 사항] 1. N은 10이상 1,000,000이하의 정수이다. (10 ≤ N ≤ 1,000,000) 2. N의 마지막 자릿수는 항상 0이다. (ex : 32850) [입력] 가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다. 각 테스트 케이스에는 N이 주어진다. [출력] 각 줄은 '#t'로 시작하고, 다음줄에 각 돈의 종류마다 필요한 개수를 빈칸을 사이에 두고 출력한다. (t는 테스트 케이스의 번호를 의미하며 1부터 시작한다.) |
3. 유효기간
문제 해결
1. 두자리씩 인덱싱하여 1~12에 포함되는지 검사한다. D3
2. 포함된다면 MM 을, 포함되지 않는다면 YY를 써준다.
3. MMYY, MMMM, YYMM, YYYY 이 네가지의 결과가 나오게 되는데
4. 적절히 결과값을 변환하여 출력해준다.
🌧 파이썬코드 제출이 없어서 따로 제출은 하지 못했다. (테스트만 통과)
소스 코드
T = int(input())
for tc in range(1, T+1):
n = input()
MM = [i for i in range(1, 13)]
result = ''
for i in range(0, 4, 2):
if int(n[i:i+2]) in MM:
result += 'MM'
else:
result += 'YY'
if result == 'MMYY' or result == 'YYMM':
print(result)
elif result == 'MMMM':
print('AMBIGUOUS')
else:
print('NA')
출처: SW Expert Academy
카드 유효기간은 대개 월(01에서 12)과 년도 뒤 두자리(2021년이면 21)의 순서대로 나타나는데, 예를 들어 2021년 7월은 0721로 나타낸다.
21은 1월에서 12월일 수 없기 때문에 0721은 MMYY표기라는 것을 알 수 있다.
어떤 유효기간 표기 네 자리가 주어질 때, 이 유효기간이 어떤 표기로 나타낸 기간인지 판별하는 프로그램을 작성하라.
[입력] 첫 번째 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 네 자리 아라비아 숫자로 이루어진 문자열이 주어진다.
[출력] 각 테스트 케이스마다 주어진 표기가 MMYY표기와 YYMM표기가 둘 다 될 수 있다면 “AMBIGUOUS”를, MMYY표기만 될 수 있다면 “MMYY”를, YYMM표기만 될 수 있다면 “YYMM”을, 둘 중 어떤 표기로도 나올 수 없다면 “NA”를 출력하라. |
'Algorithm Problem > Python' 카테고리의 다른 글
[python] 프로그래머스 - 수식 최대화 / 보석 쇼핑 (2020 카카오 인턴십) (0) | 2020.07.17 |
---|---|
[python] SWEA - 1289. 원재의 메모리 복구하기 (2) | 2020.07.16 |
[python] SWEA - 1946. 간단한 압축 풀기/ 1945. 간단한 소인수분해 (0) | 2020.07.13 |
[python] 백준 - 10799. 쇠막대기 (2) | 2020.07.07 |
[python] 백준 - 2941. 크로아티아 알파벳 (0) | 2020.07.05 |