이것이코딩테스트다 4

[Python] n19237번 | 어른 상어

문제 출처 : www.acmicpc.net/problem/19237 상어 번호 : 1~M이하의 자연수 번호, 랜덤 (단, 모든 번호는 다르다) 가장 강력한 상어 : 1의 번호를 가진 상어 격자 크기 : N X N 상어가 들어있는 칸의 개수 : M 1단계 (이동) - 모든 상어가 자신의 위치에 자신의 냄새를 뿌린다. - 그 후 1초마다 모든 상어가 동시에 상하좌우로 인접한 칸 중 하나로 이동하고, 자신의 냄새를 그 칸에 뿌린다. (냄새는 상어가 K번 이동하고 나면 사라진다) 이동 방향 결정 방법 1순위 ) 인접한 칸 중 아무 냄새가 없는 칸의 방향을 잡는다 2순위 ) 그런 칸이 없으면 자신의 냄새가 있는 칸의 방향으로 잡는다. (이때 가능한 칸이 여러개 일 수 있는데, 이땐 특정한 우선순위를 따라야 한다...

[이것이 코딩테스트다 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 [내가 보려고 적는 파이썬] 주요 ..

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

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

[이진 탐색] Chapter7 부품 찾기 & 떡볶이 떡 만들기

참고 출처 : 이것이 코딩테스트다 with 파이썬 # 부품 찾기 [이진탐색] : 재귀함수 이용할 것 1. 함수 인자에 리스트, 타겟, 0 (초기 start값), n-1 (end값)을 매개변수로 넘겨준다. 2. def function 함수 - start 값이 end보다 크면, None 값을 반환 - 만약 리스트[mid] 값이 target이랑 값이 같으면 mid를 반환한다. - 만약 ... 크다면 function(리스트, 타켓, start, mid-1) => end 값이 mid-1로 변경 - 만약 ... 작다면 start 값이 mid+1로 변경 책 답지 #떡볶이 떡 만들기 => 이진 탐색 문제이자, 파라메트릭 서치 유형의 문제 파라메트릭 서치는 최적화 문제를 결정 문제로 바꾸어 해결하는 기법이다. 원하는 조..