Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- intllij 내 Bean을 찾지 못해서 발생하는 오류
- props
- intellij
- react오류
- 웹 게임을 만들며 배우는 리액트
- ReactDOM.render is no longer supported in React 18. Use createRoot instead
- 리액트
- You are importing createRoot from "react-dom" which is not supported. You should instead import it from "react-dom/client"
- react
- 계산맞추기 게임
- vs code 내 node
- Concurrently
- 자바스크립트
- DB Browser
- Do it 자바스크립트 + 제이쿼리 입문
- 모두의 파이썬
- Colaboratory 글자 깨짐
- Python
- googleColaboratory
- 따라하며 배우는 노드 리액트 기본 강의
- 인프런
- Spring-Framework
- spring-boot
- node.js 설치
- node.js로 로그인하기
- 거북이 대포 게임
- 타자 게임 만들기
- JS 개념
- 모던자바스크립트
- 노드에 리액트 추가하기
Archives
- Today
- Total
프로그래밍 삽질 중
[백준] python 코딩테스트 - 큐(18258, 2164, 3190) 본문
출처 : http://www.yes24.com/Product/Goods/107478270
* 큐(18258)
▶ 스택과 달리 먼저 삽입된 데이터가 가장 먼저 출력
▶ 배열로도 가능하지 않나? → 배열로 큐의 기능 구현 시 먼저 삽입된 데이터가 삭제될 때마다 Ο(데이터 크기)만큼 소요
//예시 1 2 3 4 5 순서대로 배열 A의 입력에 들어오면 배열 A는?
A[0] = 1, A[1] = 2, A[2] = 3, A[3] = 4, A[4] = 5
//가장 먼저 삽입된 A[0]=1을 지우면?
A[0] = 2, A[1] = 3, A[2] = 4, A[3] = 5
//데이터 삭제할 때 시간복잡도는 O(데이터의 크기)가 되나
//큐를 사용하면 O(1)의 시간 복잡도로 해결할 수 있다
https://www.acmicpc.net/problem/18258
import sys
from collections import deque # 큐 사용하기 위해 deque 가져옴
n = int(sys.stdin.readline())
queue = deque([])
for i in range(n):
command = sys.stdin.readline().split() # 명령어를 한 줄씩 입력 받음
if command[0] == 'push':
queue.append(command[1])
elif command[0] == 'pop':
if not queue:
print(-1)
else:
print(queue.popleft())
elif command[0] == 'size':
print(len(queue))
elif command[0] == 'empty':
if not queue:
print(1)
else:
print(0)
elif command[0] == 'front':
if not queue:
print(-1)
else:
print(queue[0])
elif command[0] == 'back':
if not queue:
print(-1)
else:
print(queue[-1])
* 카드 2(2164)
▶낮은 번호일수록 위에, 높은 번호일수록 아래에 위치
▶ n =5일 경우
//5 (맨 위)
//4
//3
//2
//1 (맨 아래)
//맨 위의 5가 아닌 맨 아래 1을 삭제(queue.popleft())
https://www.acmicpc.net/problem/2164
import sys
from collections import deque
N = int(sys.stdin.readline())
queue = deque()
for i in range(N):
queue.append(N-i)
while len(queue) > 1:
queue.pop()
queue.appendleft(queue.pop())
print(queue.popleft())
#queue.popleft() #deque의 전단(맨 위) 삭제
#queue.pop() #deque의 후단(맨 아래) 삭제
#queue.append(데이터) #deque의 후단(맨 아래)에 데이터 삽입
#queue.appendleft(데이터) #deque의 전단(맨 위)에 데이터 삽입
* 뱀(3190)
https://www.acmicpc.net/problem/3190
▶ n과 k가 주어지고, 보드의 크기는 n*n, k줄에 사과의 위치가 주어짐
▶ 'ㅣ(L의 소문자)'이 주어지며 'ㅣ'개 줄에 게임 시작 시간 이후에 x 초 뒤에 왼쪽("L") 혹은 오른쪽("D")으로 이동
from collections import deque
def direction_change(d, c):
if c == "L":
d = (d - 1) % 4
else:
d = (d + 1) % 4
return d
N = int(input())
K = int(input())
board = [[0] * N for _ in range(N)]
print("board", board) #[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
for _ in range(K):
a, b = map(int, input().split())
board[a - 1][b - 1] = 1
L = int(input())
times = {}
for i in range(L):
X, C = input().split()
times[int(X)] = C
dy = [-1, 0, 1, 0] #상하좌우
dx = [0, 1, 0, -1]
direction = 1
time = 1
y, x = 0, 0
snake = deque([[y, x]])
board[y][x] = 2
while True:
y, x = y + dy[direction], x + dx[direction]
if 0 <= y < N and 0 <= x < N and board[y][x] != 2:
if not board[y][x] == 1:
del_y, del_x = snake.popleft()
board[del_y][del_x] = 0
board[y][x] = 2
snake.append([y, x])
if time in times.keys():
direction = direction_change(direction, times[time])
time += 1
else:
break
print(time)
'과거 프로그래밍 자료들 > 코딩테스트' 카테고리의 다른 글
[백준] 2750 - python (0) | 2022.10.11 |
---|---|
[백준] python 코딩테스트 - 스택(10828, 10799, 2812) (1) | 2022.09.22 |
[백준] python 코딩테스트 - 배열(10818, 2953, 1158) (0) | 2022.09.20 |
[백준] python 코딩테스트 - 기초(10869, 1330, 2438, 2439, 2442) (0) | 2022.09.19 |
[자바스크립트] 프로그래머스 - 핸드폰 번호 가리기 (0) | 2022.06.23 |