728x90
반응형

분류 전체보기 186

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

[자료구조] 스택 - Stack

🙆‍♂️Stack First in Last out인 자료구조 입니다. 데이터가 쌓여져 가는 구조인데 PUSH라는 명령어로 데이터를 Stack의 가장 위에 올리고 POP이라는 명령어로 Stack의 가장 위의 명령어를 뺍니다. TOP이라는 명령어는 가장 위의 명령어에 접근합니다. 코딩테스트에서는 배열을 사용하여 스택이라고 가정하여 접근합니다. 🙋‍♂️문제 🚀 valid parentheses 괄호 열리고 닫힌 것을 구분하는 문제들은 stack 문제로 보고 풀 수 있습니다. PUSH를 해서 괄호를 열어주고 POP을 해서 매칭이되면 괄호를 닫아줍니다. 매칭이 안되면 invalid하다는 것을 출력하는 것입니다. >관련 문제

[백준][Python] 18870. 좌표 압축

🙆‍♂️문제 🙋‍♂️풀이 좌표 압축 한다는 것은 가장 낮은 수부터 0으로 압축하여 다시 표현하는 것입니다. 입력 예제를 보면 -10이 가장 작아서 0 그 다음 -9는 1... 해서 출력 예제처럼 나오게 됩니다. 🚀 입력받기 import sys n = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().split())) 먼저 숫자 개수와 숫자들을 입력받습니다. 🚀 문제 풀이 핵심 sortArr=list(dict.fromkeys(arr)) sortArr.sort() arrDict={} for i in range(len(sortArr)): arrDict[sortArr[i]]=i 입력받은 arr값들을 sortArr로 중복을 제거하고 정렬합니다...

[백준][Python]10814. 나이순 정렬

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 n = int(input()) arr = [list(input().split()) for _ in range(n)] for i in range(n): arr[i][0] = int(arr[i][0]) 입력을 받고 for문을 사용해서 나이 값(arr[i][0])을 int형으로 형변환 해줍니다. 🚀 문제 풀이 핵심 arr.sort(key=lambda x:x[0]) key값을 나이값으로 맞춰주기 위해 x:x[0]을 해줍니다. 🚀 출력하기 for i in range(n): print(arr[i][0],arr[i][1]) 출력합니다.

[백준][Python] 1181. 단어 정렬

🙆‍♂️문제 🙋‍♂️풀이 🚀 입력받기 import sys n = int(sys.stdin.readline()) arr = [input() for _ in range(n)] 배열을 입력받습니다. 🚀 문제 풀이 핵심 delOvl = list(dict.fromkeys(arr)) delOvl.sort() delOvl.sort(key=len) delOvl이라는 리스트 변수를 선언해서 먼저 dict.fromkeys()를 사용해서 arr의 중복을 없애고 저장을 한 후 delOvl.sort()를 통해서 알파벳 순으로 배열을 정렬한 후 delOvl.sort(key = len)을 하여 문자열의 길이에 따라 배열을 정렬해주면 끝입니다. 🚀 출력하기 for i in range(len(delOvl)): print(delOvl[..

728x90
반응형