deo2kim
맞왜틀
deo2kim
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • 개발
    • Infra

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
deo2kim
Algorithm Problem/Python

[python] SWEA - 1961. 숫자 배열 회전/ 1970. 쉬운 거스름돈/ 10059. 유효기간

[python] SWEA - 1961. 숫자 배열 회전/ 1970. 쉬운 거스름돈/ 10059. 유효기간
Algorithm Problem/Python

[python] SWEA - 1961. 숫자 배열 회전/ 1970. 쉬운 거스름돈/ 10059. 유효기간

2020. 7. 14. 18:08
반응형

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

문제: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5Pq-OKAVYDFAUq&categoryId=AV5Pq-OKAVYDFAUq&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

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

문제: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PsIl6AXIDFAUq&categoryId=AV5PsIl6AXIDFAUq&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

우리나라 화폐 ‘원’은 금액이 높은 돈을 우선적으로 계산할 때 돈의 개수가 가장 최소가 된다.

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

문제: https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AXK6YRNaKq0DFAU3&categoryId=AXK6YRNaKq0DFAU3&categoryType=CODE

 

SW Expert Academy

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

swexpertacademy.com

카드 유효기간은 대개 월(01에서 12)과 년도 뒤 두자리(2021년이면 21)의 순서대로 나타나는데, 예를 들어 2021년 7월은 0721로 나타낸다.
그러나 가끔 년, 월 순서대로, 2107을 유효기간으로 표시하는 곳도 있다. 이 때, 전자를 MMYY표기, 후자를 YYMM표기라고 하자.

 

21은 1월에서 12월일 수 없기 때문에 0721은 MMYY표기라는 것을 알 수 있다.
하지만 2007년 5월을 예로 들었다면, 어떤 사람들은 이 날의 MMYY표기 0507를 YYMM표기로 받아들여 2005년 7월이라고 해석할 수 있다.

 

어떤 유효기간 표기 네 자리가 주어질 때, 이 유효기간이 어떤 표기로 나타낸 기간인지 판별하는 프로그램을 작성하라.

 

 

[입력]

첫 번째 줄에 테스트 케이스의 수 가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 네 자리 아라비아 숫자로 이루어진 문자열이 주어진다.

 

 

[출력]

각 테스트 케이스마다 주어진 표기가 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
  • 1. 숫자 배열 회전
  • 2. 쉬운 거스름돈
  •  
  • 3. 유효기간
'Algorithm Problem/Python' 카테고리의 다른 글
  • [python] 프로그래머스 - 수식 최대화 / 보석 쇼핑 (2020 카카오 인턴십)
  • [python] SWEA - 1289. 원재의 메모리 복구하기
  • [python] SWEA - 1946. 간단한 압축 풀기/ 1945. 간단한 소인수분해
  • [python] 백준 - 10799. 쇠막대기
deo2kim
deo2kim
코딩 기록하기

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.