반응형 알고리즘 테스트/백준51 백준 11729 : 하노이 탑 이동 순서 (파이썬) 하노이 탑 이동 순서 https://www.acmicpc.net/problem/11729 코드def hanoi(n): if n == 1: return ["1 3"] #짝수일때는 오른쪽으로 한칸씩 if n % 2 == 0: tmp = ["1 2", "2 3", "3 1"] #홀수일때는 왼쪽으로 한칸씩 else: tmp = ["1 3", "3 2", "2 1"] pre = hanoi(n - 1) new = [] for i in range(len(pre)): new.append(tmp[i % 3]) new.append(pre[i]) else: new.append(tmp[len(pre) % 3]) .. 2022. 1. 27. 백준 2447 : 별 찍기 - 10 (파이썬) 별 찍기 - 10https://www.acmicpc.net/problem/2447 코드 def star(n) : if n == 3 : return ["***", "* *", "***"] stamp = star(n//3) return [s*3 for s in stamp]+[s+' '*(n//3)+s for s in stamp]+[s*3 for s in stamp]print('\n'.join(star(int(input()))))해설*** 상* * 중*** 하먼저 패턴을 3부분으로 나누어 보자상, 중, 하으로 나누어서 생각하면 조금 편해진다.이게 무슨 소리냐면예로 n=9 이라면 구조가 아래 그림처럼 나온다.즉 star(9)의 배열은 총 9개의 배열을 가지게 되고각각 한줄씩 저장해 주.. 2022. 1. 26. 백준 1002 : 터렛 (파이썬) 터렛https://www.acmicpc.net/problem/1002 코드import sysfor _ in range(int(sys.stdin.readline().rstrip())) : x1,y1,r1, x2,y2,r2 = map(int,sys.stdin.readline().split()) d = (abs(x1-x2)**2 + abs(y1-y2)**2)**.5 #동심원 if d == 0 : #두 반지름이 같을 때 (교점은 무한대) if r1==r2 : print(-1) #두 반지름이 다를 떄 (만나지 않음) else : print(0) #동심원이 아닐 때 else : sum = r1+r2 d.. 2022. 1. 26. 백준 4948 : 베르트랑 공준 (파이썬) https://www.acmicpc.net/problem/4948 문제 풀이 4948번: 베르트랑 공준베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼www.acmicpc.net 코드 1import sysnums=[]#입력for line in sys.stdin: if int(line.rstrip()) == 0 : break nums.append(int(line.rstrip()))#에라토스테네스 체isPrime = [True if i>1 else False for i in range(max(nums)*2+1) ]for i in range(len(i.. 2022. 1. 26. 백준 1929 : 소수 구하기 (파이썬) 소수 구하기https://www.acmicpc.net/problem/1929 코드m,n = map(int,input().split())isPrime = [True for _ in range(n+1)]isPrime[0]=isPrime[1]= Falsefor num in range(len(isPrime)) : if isPrime[num] : if m해설에라토스테네스의 체를 사용하면 된다! 에라토스테네스의 체는 https://teching.tistory.com/5에 정리해놓았습니다. 에라토스테네스의 체(소수 판별 알고리즘)유명한 소수 개수 찾기 알고리즘 다수의 소수를 찾을때 사용하는 알고리즘으로 하나의 숫자마다 소수인지 판별하는 것보다 효율적이라 많이 사용한다! 소수의 배수는 소수일수가 없다.. 2022. 1. 25. 백준 11653 : 소인수분해 (파이썬) https://www.acmicpc.net/problem/11653 문제풀이 11653번: 소인수분해첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.www.acmicpc.net 코드n = int(input())while n>1 : for i in range(2,int(n**.5)+1): if n%i == 0 : print(i) n //= i break else : print(n) break풀이 간단하게 2부터 나눠지는지 확인 후 나눠지면 출력해준 뒤 n을 해당 값으로 나눈 뒤 for문을 돌리면 된다.중요한 건 이때도 제곱근까지만 확인하는 것!!그리고 제곱근까지 안 나눠진다면 n값.. 2022. 1. 25. 백준 9020 : 골드바흐의 추측 (파이썬) 문제https://www.acmicpc.net/problem/9020 코드import sysnums = []#입력for _ in range(int(sys.stdin.readline().rstrip())) : nums.append(int(sys.stdin.readline().rstrip()))#에라토스테네스의 체isPrime = [True for i in range(max(nums) + 1)]isPrime[0]=isPrime[1]=Falsefor i in range(2, len(isPrime)) : if isPrime[i]==False : continue else : for j in range(i*2, len(isPrime), i) : isPrime[j] =.. 2022. 1. 25. 백준 1978 : 소수 찾기 (파이썬) https://www.acmicpc.net/problem/1978 문제풀이 1978번: 소수 찾기첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.www.acmicpc.net코드import syssys.stdin.readline()nums = list(map(int,sys.stdin.readline().split()))answer = 0for num in nums : if num == 1 : continue for i in range(2,int(num**.5)+1) : if num%i ==0 : break else : answer +=1print(answer)코드 해설간단하게 각 숫자.. 2022. 1. 25. 백준 1011 : Fly me to the Alpha Centauri (파이썬) 문제https://www.acmicpc.net/problem/1011 문제풀이 코드import sysfor _ in range(int(sys.stdin.readline().rstrip())) : x,y = map(int,sys.stdin.readline().split()) distance = y-x sqrtDistance = distance**.5 movecnt = int(sqrtDistance)*2 - 1 # 거리가 제곱근일 경우 if sqrtDistance%1 == 0 : print(movecnt) # 거리의 제곱근의 소수점 부분이 0.5 이하일 경우 elif sqrtDistance%1 .5 : print(movecnt+2)코.. 2022. 1. 25. 이전 1 2 3 4 5 6 다음 반응형