코딩테스트 준비 43

[백준] 17299번 오등큰수 - 파이썬(Python)

https://www.acmicpc.net/problem/17299 17299번: 오등큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제 21.04.14 접근법 21.04.14 코드 n=int(input()) arr=list(map(int,input().split())) cnt=dict() for i in arr: try: cnt[i]+=1 except: cnt[i]=1 stack=[0] i=1 ans=[-1]*n while stack and i

[백준] 17298번 오큰수 - 파이썬(Python)

https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 문제 21.04.11 접근법 차례대로 2개 비교 오른쪽이 작으면 위치 스택에 저장 오른쪽이 크면 오른쪽 값을 왼쪽 인덱스를 스택에 저장 스택이 빌 때까지 반복 21.04.11 코드 n=int(input()) arr=list(map(int,input().split())) ans=[-1]*n stack=[0] i=1 while stack and i pop하는 값이 인덱스이면 됨! 스택에 애초부터 인덱스를 넣으면..

[백준] 10799번 쇠막대기 - Python(파이썬)

https://www.acmicpc.net/problem/10799 10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net 문제 접근법 total은 현재 총 쇠막대기 개수 - '('일 때 새로 추가되는 개수를 더해주어야 함. cnt는 현재 잘리기 전 큰 쇠막대기 개수 i는 현재 괄호 위치 '('가 추가될 때는, total과 cnt에 1더하기 ')'가 추가될 때는, cnt에 1 빼기 '('과 ')'가 연속으로 나올 때는, total과 cnt를 더하고 i 하나 건너 뛰어주기 코드 s=input() total=0 cnt=0 i=0 w..

[백준] 17413번 단어 뒤집기 2 - Python(파이썬)

https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 21.02.16 접근법 뒤집을 땐 ck=0, 괄호 안에서 제대로 출력할 땐 ck=1으로 나눠 출력하게 하였다. 뒤집어 출력하다 ''만나면 그대로 ans에 저장하고 flag=0으로 변경 4. 단어일 때는 word에 저장 후,

[백준] 10866번 덱 - Python(파이썬)

https://www.acmicpc.net/problem/10866 10866번: 덱 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 21.02.16 접근법 문제 그대로 if-else문으로 풀이 deque을 활용 21.02.16 코드 from collections import deque import sys N=int(input()) queue=deque([]) for i in range(N): cmd=sys.stdin.readline().split() if cmd[0]=='push_front': queue...

[백준] 1158번 요세푸스 문제 - Python(파이썬)

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 21.02.16 접근법 list보다 효율성있는 deque 선택 crt로 deque위치 현재 위치 파악 : 1씩 더하고, 맨 끝으로 가면 처음인 0번째로 초기화 ck로 T번째인지 체크 : 1씩 더하고, T가 되면 카운트 초기화 21.02.16 코드 from collections import deque N,T=map(int,input().split()) arr=deque([i for i in range(1,N+1)]) ck=0 crt=-1 answer=[] while arr: if(cr..

[백준] 10845번 큐 - Python(파이썬)

https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제 21.02.12 접근법 큐는 줄서기로, 먼저 들어온 것이 먼저 나간다. 때문에 popleft가 있는 deque을 사용해서 하는 것이 좋다고 판단 21.02.12 코드 import sys from collections import deque N=int(input()) queue=deque([]) for i in range(N): comd=sys.stdin.readline().s..

[백준] 1406번 에디터 - Python(파이썬)

https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net 문제 21.02.12 접근법 첫 번째 시도 커서가 오른쪽에 위치하는 걸 디폴트 값으로 정하고 그 위치를 loca변수를 사용해 옮겨 다니고자 하였다. 또한, 커서가 맨 처음 왼쪽으로 가게 되어 시작에 커서가 위치하였을 때는 front변수로 구분을 하고자 하였다. 문자 삽입은 슬라이싱으로 코드를 구성하였지만, 시간 초과에서 걸려버렸다. 슬라이싱이 원인인 거 같았다. import sys n=list(in..

[백준] 1874번 스택 수열 - Python(파이썬)

https://www.acmicpc.net/problem/1874 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 문제 21.02.12 접근법 1부터 num까지 계속 반복 1부터 push하고 + 저장 이후, stack에 마지막 저장된 것과 num 동일할 시 pop과 - 저장 하지만, 시간 초과로 실패 import sys n=int(input()) loca=0 check=[False for i in range(n+1)] answe..

[백준] 9012번 괄호 - Python(파이썬)

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 문제 접근법 다음과 같은 조건들만 성립하는 지를 체크하면 될 것이라 판단하였다. 괄호를 열고 닫는 개수가 같아야 함. 열 땐 +1, 닫을 땐 -1 체크를 0으로 시작해 0으로 끝남을 확인 단, 닫음을 2번으로 하여 -1로 넘어가게 되면 한 쌍이 안됨으로 간주하고 바로 체크 종료 #알아야 할 중요 코드 개념# sys.stdin.readline().strip() 좌우 공..