분류 전체보기 665

[백준] 2447 별찍기

www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net def concatenate(r1, r2): return [''.join(x) for x in zip(r1, r2, r1)] def star10(n): if n == 1: return ['*'] n //= 3 x = star10(n) a = concatenate(x, x) b = concatenate(x, [' '*n]*n) return a + b + a print('\n'.join(..

STUDY/Algorithm 2021.02.14

[백준] 11729 하노이 탑 이동 순서

www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net def hanoi(disk, start, mid, end): if disk == 1: #목적지로 옮기기 위해 print(start, end) else: hanoi(disk - 1, start, end, mid) # 2**(n-1) n-1개를 mid에 옮김 print(start, end) # 1 가장밑에있는 것을 end로 옮김 hanoi(disk - 1, mid, start, end) # 2**(n-..

STUDY/Algorithm 2021.02.14

[백준] 1002 터렛

www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 스타해야겠다. t = int(input()) for _ in range(t): x1,y1,r1,x2,y2,r2=map(int,input().split()) if x1==x2 and y1==y2: if r1==r2: print(-1) else: print(0) continue distance = ((x2-x1)**2 + (y2-y1)**2)**0.5 # 내부원인지 외부원인지 확인 if distance < max(r1,r2): #내부원 if abs(r2-r1) == ..

STUDY/Algorithm 2021.02.12

[백준] 9020 골드바흐의 추측

www.acmicpc.net/problem/9020 9020번: 골드바흐의 추측 1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아 www.acmicpc.net import sys input = sys.stdin.readline #에라토스테네스의 체로 소수를 먼저 구함 max_number= 10000 prime=[False,False,]+[True]*(max_number - 1) for i in range(2,int(max_number**0.5)+1): if prime: for j in range(2*i,max_number+1,i): prime[j]..

STUDY/Algorithm 2021.02.12

[백준] 4948 베르트랑 공준

www.acmicpc.net/problem/4948 4948번: 베르트랑 공준 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼 www.acmicpc.net tmp = 123456*2 prime=[False,False]+[True]*(tmp) for i in range(2,int(tmp**0.5)+1): if prime[i]: for j in range(2*i,tmp+1,i): prime[j]=False while True: n = int(input()) if n == 0: break print(prime[n+1:2*n+1].count(True)) 이번엔 에..

STUDY/Algorithm 2021.02.12

[백준] 1929 소수구하기

www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net m, n = map(int, input().split()) #m, n = 3, 16 prime=[False,False,]+[True]*(n-1) for i in range(2,n+1): if prime[i]: for j in range(2*i,n+1,i): prime[j] = False if i >= m: print(i) 에라토스테네스의 체를 사용한 문제이다. 체를 사용하여 소수를 구하면서 범위 안에 있는 경우에만 출력하는 코드이다. 타인의 ..

STUDY/Algorithm 2021.02.12

[백준] 11653 소인수분해

www.acmicpc.net/problem/11653 import sys input = sys.stdin.readline n = int(input()) i = 2 while n > 1: if n % i == 0: n //= i print(i) else: i += 1 처음에 소수인지 판별하고 몇번 나눠지는지 확인을 했다. 수가 큰 경우에는 소수 판별하는 것부터 오래걸려서 시간을 초과했다. 시간이 오래걸리긴 했지만 무사통과한 코드이다. 아래는 9,000,000 부터 10,000,000 사이에서 결과값이 나오는 시간이 0.5sec 이상인 경우에만 체크한것이다. 더보기 9000011: 0.6425809860229492sec 9000041: 0.6375772953033447sec 9000049: 0.6375768..

STUDY/Algorithm 2021.02.12

[백준] 11659 구간 합 구하기 4

www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net import sys input = sys.stdin.readline n, m = map(int, input().split()) n_list = list(map(int, input().split())) m_list = [] for _ in range(m): m_list.append(tuple(map(int, input().split()))) for m_tmp in m_list: print(..

STUDY/Algorithm 2021.02.11

[백준] 1244 스위치 켜고 끄기

www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 수학문제들은 왜 이상한 행동을 할까 스위치 켜고 끄기하면 등짝 스매시 한대 맞을각인데... import sys #input = sys.stdin.readline sys.stdin=open(".idea/inputs/1244_input1.txt","r") sw = int(input()) sw_list = list(map(int, input().split())) number_students = int(input..

STUDY/Algorithm 2021.02.10