Loading...

[Python] BOJ 20003 - 거스름돈이 싫어요

https://www.acmicpc.net/problem/20003 20003번: 거스름돈이 싫어요 프로불편러 지수는 딱 떨어지지 않는 수는 질색이다. 거스름돈이 남는 것도 딱 질색이다. 지수가 아이템을 사려 하는데, 아이템의 가격은 다 분수로 이루어져 있다. 지금은 가령, 3/2코인을 사려 www.acmicpc.net # fractions함수를 배우게 된 문제이다. # fractions.Fraction(a, b)함수는 a, b가 들어왔을 때 기약분수로 나타내준다. ex) fractions.Fraction(4, 10)은 2/5를 출력한다. '2/5' 이런 str형태로 출력되긴하는데 실제 str type은 아니라서 분자를 출력할땐 tmp = fractions.Fraction(a, b)라 하면 tmp.num..

2021. 10. 1. 23:21

[Python] BOJ 2564 - 경비원

https://www.acmicpc.net/problem/2564 2564번: 경비원 첫째 줄에 블록의 가로의 길이와 세로의 길이가 차례로 주어진다. 둘째 줄에 상점의 개수가 주어진다. 블록의 가로의 길이와 세로의 길이, 상점의 개수는 모두 100이하의 자연수이다. 이어 한 줄 www.acmicpc.net # 단순 구현문제이다. 여러가지 Case를 나누어 주고 구현하면 된다. # 만약 동근이와 상점이 북쪽, 남쪽에 있는경우는 2가지로 더 나누어주면 되는데, 동근이가 북쪽에 있고, 상점이 남쪽에 있을때 a와 b값에 따라 최단거리가 달라진다. (아래그림 참고) a+b가 w보다 작으면 answer에 a+b+h를 더해주고 아니면, w-a+w-b+h를 더해준다. 동쪽, 서쪽에 있는 경우도 마찬가지이다. w대신 h..

[Python] BOJ 14725 - 개미굴

https://www.acmicpc.net/problem/14725 14725번: 개미굴 첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N개가 주어진다. (1 ≤ N ≤ 1000) 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이 www.acmicpc.net # Trie(트라이) 자료구조로 푸는 문제이다. 1. Trie클래스를 선언한다. 1-1. insert메소드: 입력받은 먹이들(food배열)을 반복문으로 돌면서 cur_node의 key에 먹이가 없다면 cur_node[현재먹이] = {}로 만들어주고, cur_node의 key에 먹이가 존재한다면 cur_node = cur_node[string]으로 다음 먹이를 가리키도록 한다. 먹이의..

[Python] BOJ 21610 - 마법사 상어와 비바라기

https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net # 2021상반기 삼성SW 기출문제이다. # 청소년 상어와 마찬가지로 '삼성'스러운 문제이다. 단순구현, 시뮬레이션으로 쉽게 풀수 있다. 1. 처음 비바라기 마법을 시전하면 구름이 (N-2, 0), (N-1, 0), (N-2, 1), (N-1, 1)에 생기고 d방향으로 s만큼 이동한다. 그 뒤 1 ~ 5단계까지 이동명령을 따르는 것을 구현하고 새로운 구름 cloud를 return해준다. 2..

[Python] BOJ 17390 - 이건 꼭 풀어야 해!

https://www.acmicpc.net/problem/17390 17390번: 이건 꼭 풀어야 해! [2, 5, 1, 2, 3]을 비내림차순으로 정렬하면 [1, 2, 2, 3, 5]이다. www.acmicpc.net # 1차원 누적합 문제이다. 1. 수열 num을 입력받은 뒤, 비내림차순으로 정렬해준다. 2. prefix_sum에 수들의 누적합을 구해서 append해준다. 3. Q만큼 질문의 답을 출력해준다. L R = B[L] + B[L+1] + .. + B[R-1] + B[R] 이므로 prefix_sum[R] - prefix_sum[L-1]을 출력하면 된다. import sys input = sys.stdin.readline N, Q = map(int,input().split()) num = li..

[Python] BOJ 16571 - 알파 틱택토

https://www.acmicpc.net/problem/16571 16571번: 알파 틱택토 현재까지 진행된 틱택토 게임 보드가 띄어쓰기로 구분되어 3줄에 걸쳐 주어진다. 0은 빈칸, 1은 X, 2는 O를 의미한다. 단, 항상 X가 선공이다. 그리고 이미 게임이 종료된 상태는 입력으로 주어지 www.acmicpc.net # 우리가 알고있는 3x3 틱택토 게임이다. import sys sys.setrecursionlimit(10**6) first, second = 0, 0 blank = [] m = [list(map(int,input().split())) for _ in range(3)] # 이미 1이 놓여진 칸과 2가 놓여진 칸, 0이 놓여진 칸을 세준다. for i in range(3): for j ..

[Python] BOJ 15998 - 카카오머니

https://www.acmicpc.net/problem/15998 15998번: 카카오머니 만약 유효한 최소 충전 단위 M(1 ≤ M ≤ 9 * 1018)이 존재한다면, 첫 번째 줄에 M 을 출력한다. 가능한 값이 여러 가지 있다면, 그중 9 * 1018 이하인 것을 아무거나 하나 출력한다. 존재하지 않는다면 www.acmicpc.net # 2018 카카오 코드 페스티벌문제이다. # 문제자체는 구현문제라 어렵지 않은데, 예외처리가 까다로웠다 import sys input = sys.stdin.readline def gcd(a, b): if b == 0: return a else: return gcd(b, a % b) N = int(input()) M = -1 minb = 10000000000000000..

[Python] BOJ 9081 - 단어 맞추기

https://www.acmicpc.net/problem/9081 9081번: 단어 맞추기 입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 하나의 단어가 한 줄로 주어진다. 단어는 알파벳 A~Z 대문자로만 이루어지며 항상 공백이 없는 연속된 알 www.acmicpc.net # C++ STL에는 next_permutation 메소드가 있지만, java나 Python에는 존재하지 않아 직접 구현을 해주었다. # https://hanil0623.tistory.com/2