728x90
반응형

코딩테스트 91

[백준][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..

[백준][Python] 1874. 스택 수열

🙆‍♂️문제 🙋‍♂️풀이 문제가 말이 어렵네요. 2가지 규칙이 있습니다. 1. PUSH는 오름차순으로 ( 입력값 상관 없이) 2. POP은 입력된 값대로 예를 들어서 총 수(n)을 8이라고 입력 받고 4 3 6 8 7 5 2 1을 입력받았다면 1 2 3 4를 PUSH 하고 POP 해서 4를 빼고 또 POP해서 3을 빼는.. 그렇게 POP해서 만든 리스트가 4 3 6 8 7 5 2 1이 되어야 합니다. 안되는 경우도 있는데 교착 상태에 빠지는 경우 입니다. 스택의 LIFO 특성 덕분에 a가 POP되어야 할 때 a위에 a보다 작은 b가 있다면 교착상태가 됩니다. 안되는 경우를 한 마디로 정의하면 list[i]이 list[i+1]보다 큰 경우 입니다. 🚀 입력받기 import sys n = int(sys.st..

[백준][Python] 9012. 괄호

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 import sys n = int(sys.stdin.readline()) ps = [list(input()) for _ in range(n)] 괄호 케이스 수를 n에 입력받고 괄호들은 ps리스트로 입력됩니다. 🚀 문제 풀이 핵심 & 출력 for i in ps: psStack=[] chk=1 for j in i: if j == '(': psStack.append('(') elif j ==')': if len(psStack) == 0: chk=0 break else: psStack.pop(len(psStack)-1) if len(psStack) == 0 and chk == 1: print("YES") else: print("NO") '('를 입력받으면 psStack이라는..

[백준][Python] 9093. 단어 뒤집기

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 import sys n = int(sys.stdin.readline()) sen = [list(sys.stdin.readline().split()) for _ in range(n)] 빠른 입력을 위해서 sys를 사용합니다. n에 입력 될 문장 수를 입력받고 sen 리스트에 문장들을 입력받습니다. 🚀 문제 풀이 핵심 & 출력 for i in sen: revWord =[] for j in range(len(i)): word = list(i[j]) word.reverse() addWord = "".join(word) revWord.append(addWord) for k in revWord: print(k, end=" ") print("") revWord 리스트를 선언하여 ..

[백준][Python] 10828. 스택

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 import sys n = int(sys.stdin.readline()) com = [list(sys.stdin.readline().split()) for _ in range(n)] 시간 제한이 있어서 sys.stdin.readline()으로 입력을 받아야 합니다. 명령어 수와 명령어들을 입력받습니다. 🚀 문제 풀이 핵심 & 출력 stack=[] for i in com: arrLen = len(stack) if i[0] == 'push': stack.append(i[1]) elif i[0] == 'pop': if arrLen==0: print(-1) else: print(stack[arrLen-1]) stack.pop(arrLen-1) elif i[0] == 'siz..

728x90
반응형