728x90
반응형

백준 34

[백준][Python] 17299. 오등큰수

🙆‍♂️문제 🙋‍♂️풀이 오큰수 문제와 비슷하지만 오큰수문제는 오른쪽에 있는 수 중 가장 왼쪽에 있는 가장 큰 수였다면 오등큰수는 값이 큰 것이 아닌 등장 수가 가장 많은 수 중 가장 왼쪽의 수 입니다. 없는 경우 -1을 출력합니다. 🚀 입력받기 from collections import Counter import sys n = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().split())) 배열 속 요소를 세야하기 때문에 collections의 Counter함수를 사용합니다. 🚀 문제 풀이 핵심 cnt = Counter(arr) stack = [] answer=[] for i in range(n): answer.append(-1)..

[백준][Python] 17298. 오큰수

🙆‍♂️문제 🙋‍♂️풀이 수열이 주어집니다. 이 수열에 있는 값 중 하나를 Ai라고 했을 때 오큰수는 수열 중 Ai보다 큰 수 중 가장 왼쪽에 있는 수를 의미합니다. 🚀 입력받기 import sys n = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().split())) 우선 수열의 길이 n과 수열 arr을 입력 받습니다. 🚀 문제 풀이 핵심 stack = [] answer=[] for i in range(n): answer.append(-1) maxNum = max(arr) for i in range(n): if len(stack) == 0: stack.append(i) else: while 1: if arr[i] > arr[sta..

[백준][Python] 10799. 쇠막대기

🙆‍♂️문제 🙋‍♂️풀이 괄호를 통해서 막대기수와 레이저 수를 구해서 풀어야 합니다. 스택 구조를 이용해서 풀 수 있습니다. 🚀 입력받기 import sys msg = list(sys.stdin.readline()) 먼저 괄호들을 하나하나 문자로 입력받아 msg 리스트에 저장합니다. 🚀 문제 풀이 핵심 br = []; total = 0 for i,v in enumerate(msg): if v == '(': br.append('(') elif v == ')': if msg[i-1] == '(': br.pop(-1) total += len(br) else: br.pop(-1) total+=1 br리스트를 스택으로 사용하고 total 변수에 모든 값을 저장합니다. enumerate를 사용해서 msg리스트의 인..

[백준][Python] 1264. 모음의 개수

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 total = [] while 1: try: qStr = list(input()) if '#' in qStr: break else: total.append(qStr) except: break while 문과 try ~ except 문을 사용해서 #이 입력되면 입력이 종료되도록 설정하고 모든 입력을 문자로 저장하여 total에 리스트값들로 다시 저장했습니다. 🚀 문제 풀이 핵심 & 출력하기 cnt=0;mo=['a','e','i','o','u','A','E','I','O','U'] for i in total: for j in i: if j in mo: cnt+=1 print(cnt) cnt=0 모음으로 인정하는 a, e, i, o, u와 대문자들까지를 배열에 저장해놓고 ..

[백준][Python] 17413. 단어 뒤집기 2

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 string = list(input()) 일단 입력된 문자열을 문자 단위 리스트 형식으로 저장합니다. 🚀 문제 풀이 핵심 readyOutput = [] temp=[] br=0 for i,v in enumerate(string): if i == len(string)-1: if br != 1: temp.append(v) temp.reverse() readyOutput.append(temp) temp=[] if v == '') readyOutput.append(temp) temp=[] br=0 else: temp.append(v) else: if v == ' ': temp.reverse() temp.append(' ') readyOutput.append(temp) temp..

카테고리 없음 2022.08.29

[백준][Python] 10866. 덱

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 import sys n = int(sys.stdin.readline()) com = [list(sys.stdin.readline().split()) for _ in range(n)] 빠른 입력을 위해서 sys라이브러리를 사용해 sys.stdin.readline()으로 입력을 받았습니다. n에는 명령어의 개수를 입력받고 com에는 명령어들을 입력받았습니다. 🚀 문제 풀이 핵심 & 출력하기 deque=[] for i in com: lenD = len(deque) if i[0] =='push_front': deque.insert(0, i[1]) elif i[0] == 'push_back': deque.append(i[1]) elif i[0] == 'pop_front': i..

[백준][Python] 1158. 요세푸스 문제

🙆‍♂️문제 🙋‍♂️풀이 요세푸스 문제를 정리하자면 n과 k를 입력받고 1부터 n까지의 수가 원을 이루며 있는데 계속적으로 k번 째 수를 빼내는 것입니다. 1부터 시작되어서 3번 째 수를 빼내고 그 다음은 4부터 해서 6을 빼고 이런식으로 해서 다 빼내는 것입니다. 🚀 입력받기 import sys n,k = map(int ,sys.stdin.readline().split()) arr=[] for i in range(n): arr.append(i+1) n과 k를 입력받고 1부터 n까지수로 된 리스트를 만듭니다. 🚀 문제 풀이 핵심 jose=[] i=0 while len(arr) != 0: i+=k i = i % len(arr) - 1 jose.append(arr[i]) arr.pop(i) if i == -..

[백준][Python] 10845. 큐

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 import sys n = int(sys.stdin.readline()) com=[list(sys.stdin.readline().split()) for _ in range(n)] 시간 제한이 있기 때문에 빠른 입력인 sys.stdin.readline()을 통해서 입력을 받습니다. 이러면 엔터(\n)도 입력되는데 사실 상관이 없는게 엔터 입력된 부분을 접근하지 않아서 괜찮습니다. 🚀 문제 풀이 핵심 & 출력 queue=[] for i in com: lenQ = len(queue) if i[0] == 'push': queue.append(i[1]) elif i[0] == 'pop': if lenQ == 0: print(-1) else: print(queue[0]) que..

[백준][Python] 2163. 초콜릿 자르기

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 import sys n,m = map(int, sys.stdin.readline().split()) 가로 세로 값 n,m을 입력받습니다. 🚀 문제 풀이 핵심 if n==m: total = n*m-1 else: total = (n-1)+n*(m-1) 여러 가지를 경우를 생각해보면서 공식을 찾았습니다. n과 m이 같은 경우는 둘의 곱에 1을 빼면 되고 평소에는 (n-1)+n*(m-1)을 하면되는데 그림을 그리면 이해가 빨라집니다. 위처럼 3*4 초콜릿이 있을 때 (3-1)번인 2번 자르면 3번 자를 수 있는 초콜릿이 3개가 나오기 때문에 3 * (4-1)을 하여서 구할 수 있습니다. 이 둘을 더하면 (n-1)+n*(m-1)이 공식이 나옵니다. 🚀 출력하기 print(to..

728x90
반응형