여니의 취준 준비 253

[Python] deque 헷갈리는 부분 총 정리

입력값 1 2 1 2 1 2 belt = deque(list(map(int, input().split()))) # deque([1, 2, 1, 2, 1, 2]) 입력값 1 2 1 2 1 2 3 4 3 4 3 4 belt = deque(list(map(int, input().split())) for _ in range(2)) # deque([[1, 2, 1, 2, 1, 2], [3, 4, 3, 4, 3, 4]]) 입력값 3 (N값) robot = deque(i for i in range(N)) print(robot) # deque([0, 1, 2]) 입력값 3 (N값) robot=deque([i] for i in range(N)) print(robot) # deque([[0], [1], [2]]) 입력값 ..

[Python] n20056번 | 마법사 상어와 파이어볼

* 주어진 조건 * 격자 크기 : N X N 파이어볼 : M개 질량 : m 방향 : d 속력 : s 위치 : (r,c) r은 행, c는 열 파이어볼의 방향 격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있다. => 이 문구를 이해하는 데 꽤나 시간이 오래 걸렸..다.. 바보인가부다.. 1번 행에서 격자 밖인 0번 행으로 넘어갈 경우에는 격자 밖을 벗어나는 게 아니라 N번 행으로 넘어간다는 뜻이다. 순환시스템이라고 보면 되려나..? ㅎ..ㅎ * 과정 * 1. 모든 파이어볼이 자신의 방향 d로 속력 s칸 만큼 이동한다 2. 이동이 모두 끝난 뒤, 2개 이상의 파이어볼이 존재하는 칸에서는 다음과 같은 일이 일어난다. 1) 같은 칸에 있..

[Python] n20057번) 마법사 상어와 토네이도

맵 크기 : N X N 모래 양 : A[r][c] 토네이도 시전 시, 가운데 칸 부터 이동이 시작된다. 토네이도는 1번에 1칸 씩 이동한다. X->Y로 이동할 시,Y의 모든 모래가 비율이 적혀있는 칸과 a로 이동한다. 비율은 y에 있는 모래의 해당 비율만큼으로 소수점 아래는 버린다. a로 이동하는 모래양은 비율이 적혀있는 칸으로 이동하지 않은 남은 모래의 양이다. 모래가 이미 있는 칸으로 이동하면?모래의 양은 더해지게 된다. 토네이도는 (1,1)까지 이동한 뒤 소멸한다.모래가 격자 밖으로 이동할 수도 있다.토네이도 소멸 시 격자 밖으로 나간 모래양을 구해보는 것이 이 문제의 핵심 **제한** 3 ≤ N ≤ 499 N은 홀수 0 ≤ A[r][c] ≤ 1,000 가운데 칸에 있는 모래의 양은 0 단계 1) ..

[Python] n20058) 마법사 상어와 파이어스톰

이 문제는 회전(90도), 인접한 얼음구하기, BFS를 구현할 수 있어야 하는 문제이다. 맵 크기 : 2^N X 2^N 얼음의 양 : A[r][c] 단계 : L 파이어스톰 단계 1) 격자(2^N X 2^N)를 부분격자2^L X 2^L로 나눈다. 2) 모든 부분 격자들을 시계방향으로 90도 회전시킨다. 3) 얼음이 있는 칸 3개 또는 그 이상과 인접해있지 않은 칸은 얼음의 양이 1 줄어든다. 우리가 출력해야 하는 것은? 1) 남아 있는 얼음 A[r][c]의 합 2) 남아 있는 얼음 중 가장 큰 덩어리가 차지하는 칸의 개수 (단, 덩어리가 없으면 0을 출력) ** 제한 ** 2 ≤ N ≤ 6 1 ≤ Q ≤ 1,000 0 ≤ A[r][c] ≤ 100 0 ≤ Li ≤ N 단계 1) 회전 왼쪽 상단 -> 오른쪽 ..

Python) 데이터 입력받는 법 정리

- 입력받는 데이터가 1줄에 1개 있을 경우 ex) 1 num=int(input()) - 입력받는 데이터가 1줄에 2개 이상일 경우 (2개라고 가정함, 입력받는 데이터가 숫자일 경우) ex) 1 2 n1,n2=map(int,input().split()) (입력받는 데이터가 문자일 경우) ex) R R R U D D list1=input().split() # 결과값 # ['R', 'R', 'R', 'U', 'D', 'D'] (입력 받는 데이터가 숫자이고, 리스트로 받을 경우) array=[] array=list(map(int,input().split()) - 2차원 배열 맵 초기화하기 n,m=map(int,input().split()) # n은 행, m은 열 map_list=[[0]*m for _ in r..

[이것이 코딩테스트다 Ch5 ] DFS와 BFS

1. 스택과 큐 (1) 스택 - 후입선출 - 삽입은 append(n) , 삭제는 pop() (2) 큐 - 선입선출 - 파이썬에선 큐 구현을 위해 deque 라이브러리를 사용한다. - 삽입 append(n), 삭제 popleft() - queue 라이브러리 대신 deque 라이브러리를 사용하는 이유? (from collections import deque) >> deque는 스택과 큐의 장점을 모두 채택한 것이라서 데이터를 넣고 빼는 속도가 훨씬 빠르기 때문! >> 코테에서는 collections 모듈과 같은 기본 라이브러리 사용을 허용함 : 코테 라이브러리에 대한 내용이 자세히 잘 나와있어서 주소 첨부! https://velog.io/@koyo/python-docs-6 [내가 보려고 적는 파이썬] 주요 ..

[이것이 코딩 테스트다] 목차 정리

1. 그리디 ( =탐욕법) : 현재 상황에서 가장 좋아보이는 것만을 선택하는 알고리즘 > 그리디 알고리즘 유형 문제는 매우 다양하기에 암기만 한다고 해서 문제를 다 풀 수 있는 건 절대 아니다 * 그리디 알고리즘은 기준에 따라 좋은 것을 선택하는 알고리즘이기에 문제에 알게 모르게 기준을 제시해준다 (예를 들면, 가장 큰 순서대로 또는 가장 작은 순서대로 ...) 이 기준들은 정렬 알고리즘을 사용할 때 만족시킬 수 있으므로 주로 그리디 알고리즘은 정렬 알고리즘과 짝을 지어 문제가 출제 된다. 2. 구현 : 머릿속에 있는 알고리즘을 정확하고 빠르게 프로그램으로 작성하는 방법이다. 구현이란 머릿속에 있는 알고리즘을 소스 코드로 바꾸는 과정을 의미함 완전 탐색, 시뮬레이션 유형을 모두 구현 유형으로 묶어서 다룬..

[Chapter8] 다이나믹 프로그래밍

참고 출처 : 이것이 코딩테스트다 with 파이썬 다이나믹 프로그래밍 : 동적 계획법 피보나치 수열은 재귀함수로도 구현이 가능하지만, 숫자가 커질수록 연산수가 늘어남.. 그래서 피보나치 수열은 보통 다이나믹 프로그래밍을 사용해서 구현함. 항상 다이나믹 프로그래밍을 사용할 수 있는 것은 아니다. 다음 조건을 만족할 때만 다이나믹 프로그래밍을 사용할 수 있다. 1. 큰 문제를 작은 문제로 나눌 수 있다. 2. 작은 문제에서 구한 정답은 그것을 포함하는 큰 문제에서도 동일하다. 피보나치 수열을 메모이제이션 기법을 사용해서 해결하기 (메모이제이션은 다이나믹 프로그래밍 구현 방법 중 하나이다.) => 메모이제이션 기법은, 한 번 구한 결과를 메모리 공간에 메모해두고 같은 식을 다시 호출하면 메모한 결과를 그대로 ..