알고리즘/SWEA 26

[Python] SWEA D2 1970번 - 쉬운 거스름돈

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com T = int(input()) change = [50000, 10000, 5000, 1000, 500, 100, 50, 10] for t in range(1, T + 1): n = int(input()) chk = [] for i in change: chk.append(n // i) n %= i print('#%d' % t) print(*chk) - 거스름돈이 배수 관계를 이루는 전형적인 그리디 문제입니다. - 그리디 문제는 나누어 주는 숫자끼리 배수 관계에 있을 때, 통하는 방법입니다. 서로 배수 관계가 아닌 경우에는 여러가지 케이스가 생길 수 있습니다. - 각..

알고리즘/SWEA 2022.08.21

[Python] SWEA D2 1926번 - 간단한 369게임

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com n = int(input()) nl = list(i for i in range(1, n + 1)) ns = [] for i in nl: cnt = 0 dash = '' cnt += str(i).count('3') cnt += str(i).count('6') cnt += str(i).count('9') for _ in range(cnt): dash += '-' if cnt == 0: ns.append(str(i)) else: ns.append(dash) print(*ns) - 1~N 사이의 값을 string으로 변환해서 count 함수를 사용해 3, 6, 9의 개수..

알고리즘/SWEA 2022.08.21

[Python] SWEA D2 1976번 - 시각 덧셈

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com T = int(input()) for t in range(1, T + 1): h1, m1, h2, m2 = map(int, input().split()) h = (h1 + h2) * 3600 m = (m1 + m2) * 60 ans = h + m if ans//3600 >= 12: ans -= 12 * 3600 print('#%d %d %d' % (t, ans//3600, (ans%3600)//60)) - 입력받은 시간을 1시간 = 3600, 1분 = 60 같은 초 형태로 변환 후 더해줍니다. - 그 후 시간과 분 단위로 다시 나타내기 위해 3600으로 나눠줍니다..

알고리즘/SWEA 2022.08.21

[Python] SWEA D2 2001번 - 파리 퇴치

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com T = int(input()) for t in range(1, T + 1): n, m = map(int, input().split()) space = [list(map(int, input().split())) for _ in range(n)] ans = 0 for i in range(n - m + 1): for j in range(n - m + 1): tmp = 0 for k in range(m): for r in range(m): tmp += space[i + k][j + r] ans = max(ans, tmp) print('#%d %d' % (t, ans)) ..

알고리즘/SWEA 2022.08.21

[Python] SWEA D2 1974번 - 스도쿠 검증

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com T = int(input()) for t in range(1, T + 1): sudoku = [list(map(int, input().split())) for _ in range(9)] chk = 1 # 행 for i in range(9): num = [] for j in range(9): if num: if sudoku[i][j] in num: chk = 0 break num.append(sudoku[i][j]) # 열 for i in range(9): num = [] for j in range(9): if num: if sudoku[j][i] in num: c..

알고리즘/SWEA 2022.08.21

[Python] SWEA D2 1966번 - 숫자를 정렬하자

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 이 문제는 입력받은 숫자를 오름차순으로 정렬하여 출력하면 됩니다. - 리스트를 sort()를 사용해 오름차순 정렬한 후 출력합니다. - 만약 역순으로 정렬하고 싶다면 아래와 같은 방식으로 할 수 있습니다. n_lst.sort(reverse = True) T = int(input()) for t in range(1, T + 1): n = int(input()) n_lst = list(map(int, input().split())) n_lst.sort() print('#%d' % t, end=' ') print(*n_lst) # 다른 출력 방식! # print("#{..

알고리즘/SWEA 2022.06.02

[Python] SWEA D2 1961번 - 숫자 배열 회전

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 이 문제는 아이디어를 떠올렸지만 코드로 구현하기 힘들어서 구글링(ㅎ) 했습니다......(멍충멍충) 입력받은 2차원 리스트를 90도, 180도, 270도 회전시킨 것을 출력해주면 되는 문제인데요. 90도 돌리는 방법을 알면 180도, 270도 회전 또한 할 수 있습니다. - 처음 입력 받은 리스트 외에 3개의 리스트(90, 180, 270)을 미리 만들어 놓습니다. - 예시(90도 회전) 1 2 3 -> 7 4 1 4 5 6 8 5 2 7 8 9 9 6 3 - 90도 회전을 위해서는 첫번째 열이 첫번째 행으로 가야합니다. (1 4 7의 역순으로 7 4 1을 행 배..

알고리즘/SWEA 2022.06.02

[Python] SWEA D2 1948번 - 날짜 계산기

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제에서 두 번째로 오는 날짜가 무조건 첫 번째 날짜보다 크다고 했기 때문에 조건을 같은 달인 경우와 아닌 경우로 나누었습니다. - 같은 달인 경우는 날짜만 구해주면 답이 됩니다. - 다른 달의 경우는 첫 번째 날짜와 두 번째 날짜 사이의 일수를 모두 합친 것에 (첫 번째 날짜 - 그 달의 일수 + 두 번째 날짜)를 더해주면 됩니다. T = int(input()) days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] for t in range(1, T + 1): m1, d1, m2, d2 = map(int, input..

알고리즘/SWEA 2022.06.02

[Python] SWEA D2 1940번 - 가랏! RC카!

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 이 문제는 물리를 배운 분들이면 헷갈린다고 하는 문제더라구요... 물론 저는 물리 잘 몰라서 그냥 문제대로 풀었습니다 ^_^(이득맞나..) 문제에 나온대로 규칙을 적용해주면 됩니다. - 0은 속도 유지, 1은 가속, 2는 감속 - 포인트는 속도를 거리에 계속 더해주는 것인데, 입력된 숫자에 따라 그 양이 달라질 뿐 계속 더해진다는 것입니다. - 입력받은 2개의 수를 기준으로 1과 2인 경우를 나누어주어야 합니다. 1) 1인 경우: 속도인 s에 증가할 속도를 더해줍니다. 2) 2인 경우: 속도인 s가 감소할 속도보다 큰지 확인한 이후 빼줍니다. - 위의 두 가지 작..

알고리즘/SWEA 2022.06.02

[Python] SWEA D2 1979번 - 어디에 단어가 들어갈 수 있을까

SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제에서 요구하는 것은 k 횟수만큼 연달아 1이 되는 가로, 세로가 몇 개인지 세는 것입니다. 행을 찾든 열을 찾든 구성은 똑같습니다만 탐색하는 범위가 반대가 되어야합니다. - 1이 k만큼 등장하는지 확인하기 위해 cnt를 이용합니다. - 2차원 리스트이므로 for문을 2개 사용해주었습니다. - 하나씩 탐색할 때, 해당 위치의 수가 0이라면 cnt가 k와 같은지 확인합니다. 그렇다면 1이 k개 등장한 이후 0이 나온 것이므로 전체 횟수를 하나 더해주면 됩니다. 만약 저 조건문에 걸리지 않는다면 cnt를 0으로 바꿔주어야 합니다. 1의 연속이 깨졌기 때문이죠. - ..

알고리즘/SWEA 2022.06.02