[백준] 18258번 : 큐2(큐)- 파이썬[Python] 문제 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 import sys from collections import deque t= int(sys.stdin.readline()) que = deque() # 빈 큐 만들기 for i in range(t): command=sys.stdin.readline().split() if command[0]=='push': que.append(command[-1]) elif command[0]=='pop': if not que: print(-1.. [백준] 1874번 : 스택 수열(스택)- 파이썬[Python] 문제 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 풀이 import sys n=int(sys.stdin.readline()) n_check=1 #첫번째 수열까지 탐색할 변수 stack=[] #스택 리스트 solve=[] #정답(+,-) 리스트 --> 수열을 입력받는 즉시 판단하기때문에 리스트 형식으로 담아두기 for i in range(n): suyeoul=(int(sys.stdin.readline())) #수열 입력 for.. [백준] 17298번 : 오큰수(스택)- 파이썬[Python] 문제 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 풀이 import sys stack=[] t=int(sys.stdin.readline()) list1=list(map(int,sys.stdin.readline().split())) for i in range(len(list1)-1): stack.append(i) while stack!=[] and list1[stack[-1]] [백준] 1929번 : 소수 구하기(에라토스테네스의 체)- 파이썬[Python] 문제 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.net 풀이 left,right=map(int,input().split()) list1=[True]*(right+1) if len(list1)>2: list1[0]=False list1[1]=False for i in range(2,right+1): if list1[i]==True: for n in range(2*i,right+1,i): list1[n]=False list2=[i for i in range(left,right+1) if list1[i]==True] for i in list2: p.. [백준] 1002번 : 터렛(두 원의 위치 관계)- 파이썬[Python] 문제 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 풀이 일단 두 좌표의 한 지점까지의 거리가 나오며 거리의 변수가 r인 것으로 보아 원을 이용해서 푸는 문제임을 알 수 있다. 각 좌표(x,y)에서 r값을 반지름으로 하는 원을 그려서 겹치는 지점의 개수를 출력하는 문제이다. 즉, 두 원의 위치관계에 대한 조건을 이용해서 문제를 풀어야 한다. 과거 고등학교 시절 두 원의 위치관계에 대해서 공부했던 기억이 있었지만, 정확하게 기억은 나지 않았다. 그래도 혼자서 문제를 해결하기 위해 코드를 짜보았다. 피타고라스 정리를 이용해서 (x2-x1)^2+(y2-y1)^2 과.. [백준] 1316번 : 그룹 단어 체커- 파이썬[Python] 문제 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 풀이 T=int(input()) check_list=[] #나왔던 글자 넣는 리스트 check=0 #그룹 단어인지 체크 (1=그룹단어 0=그룹단어x) cnt=0 #그룹 단어 숫자 세기 for i in range(T): dan=list(input()) check_list.append(dan[0]) #첫번째 글자 먼저 리스트 삽입 if len(dan)>1:#단어가 한 글자가 아닐 경우 for i in range(1,len(dan.. [백준] 1934번 : 최소공배수(유클리드 호제법)- 파이썬[Python] 문제 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 풀이 처음에는 위 공식과 같이 초등학교때 배웠던 최소 공배수를 구하는 공식으로 코드를 짰었지만 T=int(input()) c=[] def multiply(arr): ans = 1 for n in arr: ans *= n return ans for i in range(T): A = list(map(int,input().split())) n = 2 if A[0]==1 or A[1]==1: #한 쪽 수가 1일 경우 print(max(A)) c.. [백준] 1789번 : 수들의 합 - 파이썬[Python] 문제 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 코드 i=0 S=int(input()) while S>0: S=S-i i+=1 if (S-i) [백준] 11653번 : 소인수분해 - 파이썬[Python] 문제 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 코드 A=int(input()) i=2 B=A while i!=(A+1): if (B%i)==0: B=B/i print(i) i==2 else: i+=1 풀이 소인수란 주어진 자연수를 나누어 떨어뜨리는 약수 중에서 소수(2, 3, 5, 7)인 약수를 말한다. 즉, 2 이상의 소수로 나누어 떨어지는 반복문을 활용하여 문제 풀이가 가능하다 일단 원본 변수 A와 계산할 변수 B를 설정한다. 그리고 i를 2로 지정한 후 (A+1)의 범위까지 1씩증가하는 반복문을 만든다. (A+1까지 범위를 설정한 이유는 소수일 경우 소인수가 자기 자신이기 때문에 범위가 원본보다 커야 탐색이 가능하다).. 이전 1 2 다음