백준 153

[백준] 12871 무한 문자열

www.acmicpc.net/problem/12871 12871번: 무한 문자열 첫째 줄에 s, 둘째 줄에 t가 주어진다. 두 문자열 s와 t의 길이는 50보다 작거나 같은 자연수이고, 알파벳 소문자로만 이루어져 있다. www.acmicpc.net def gcd(x, y): if x > y: x, y = y, x while x > 0: y, x = x, y % x return y def chk(s, t): tmp = gcd(len(s), len(t)) tmp_s = s*(len(t)//tmp) tmp_t = t*(len(s)//tmp) if tmp_t == tmp_s: return 1 return 0 print(chk(input(), input())) 최소공배수길이로 만들어서 비교하였다.

STUDY/Algorithm 2021.03.26

[백준] 13706 제곱근 python

www.acmicpc.net/problem/13706 13706번: 제곱근 첫째 줄에 양의 정수 N이 주어진다. 정수 N의 제곱근은 항상 정수이며, N의 길이는 800자리를 넘지 않는다. www.acmicpc.net # 내가 푼 방식 from math import isqrt print(isqrt(int(input()))) sqrt로도 해봤는데 에러가 났다. 자리수가 커서 소수점이 생기면 오버플로우 에러가 뜬다고 한다. 그래서 integer인경우에 사용 가능한 isqrt가 있다고 해서 사용했고 통과했다. 사실 이렇게 푸는 문제는 아닌것 알고 있었다. 이분탐색을 제대로 사용하지 못해 이렇게 시도했다 # 이분탐색 n = int(input()) low = 1 high = n while 1: mid = (low ..

STUDY/Algorithm 2021.03.25

[백준] 12907 동물원

www.acmicpc.net/problem/12907 12907번: 동물원 동물원에 동물이 N마리 있고, 1번부터 N번가지 번호가 매겨져 있다. 이 동물원에 동물은 토끼나 고양이밖에 없고, 모든 동물의 키는 다 다르다. 수빈이는 토끼와 고양이를 구분할 수 없지만, 토끼 www.acmicpc.net N = int(input()) ans_list = list(map(int, input().split())) ans_dict = dict(zip(range(41),[0] * 41)) for i in range(N): index = ans_list[i] ans_dict[index] += 1 len1 = 0 for i in range(41): if ans_dict[i] == 0: len1 = i break else:..

STUDY/Algorithm 2021.03.25

[백준] 1149 RGB거리

www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net N = int(input()) total = [[0]*3 for _ in range(N + 1)] for i in range(1, N + 1): x, y, z = list(map(int, input().split())) if i == 1: total[i] = [x, y, z] else: total[i][0] = min(total[i - 1][1], total[i - 1][2]) + x to..

STUDY/Algorithm 2021.03.23

[백준] 9461 파도반 수열

www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net dp = [0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9] for tc in range(int(input())): N = int(input()) for i in range(len(dp), N + 1): dp.append(dp[i - 1] + dp[i - 5]) print(dp[N]) dp 문제라고 하기엔 너무 쉽다. 내가 원한건 이런문제가 아니었는데... 쉬운건 빠르게 넘어가야겠다

STUDY/Algorithm 2021.03.23

[백준] 1904 01타일

www.acmicpc.net/problem/1904 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net N = int(input()) dp = [0, 1, 2] + [0] * (N - 2) for i in range(3, N + 1): dp[i] = (dp[i-1] + dp[i-2]) % 15746 print(dp[N]) 피보나치 수열인것같아서 넣었는데 메모리 초과가 떴다. 범위를 확인해보니 최대범위는 1,000,000이 되는데 피보나치 수열은 일정이상만 가도 수가 많이 커져서 메모리를 많이 잡아먹는다. dp에 할당할..

STUDY/Algorithm 2021.03.23

[백준] 12100. 2048(Easy)

https://acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net from copy import deepcopy def backtrack(arr, index=5, dir_arr=[]): if index == 0: global max_val tmp = findmax(arr) if max_val < tmp: max_val = tmp return else: for i in range(4): tmp_arr = deepcopy(arr) tmp_arr..

STUDY/Algorithm 2021.03.16