[BOJ] 12100. 2048 (Easy)
문제 2048 (Easy) (https://www.acmicpc.net/problem/2048) 풀이 1. 초기 접근 문제조건 해석 판이 주어지고, 각 스텝마다 판 전체의 값이 달라진다. 움직이는 방향은 4가지 이므로, 바뀌는 판도 4가지 경우가 생긴다. 특정 스텝에서 멈추고, 가장 큰 값을 반환해야 한다. BFS 문제다. 알고리즘 전체적인 BFS 문제, 바뀌는 것은 전체 판이니, BFS queue 에 전체 판을 넣어주면 된다. 한 번에 4가지 경우의 판이 생기고, 총 5번까지 해야하니, 최대 경우의 수는 4^5 = 1024개다. 각 방향에 대하여 움직이는게 좀 까다로운데, 이를 별도의 함수 move(board, di) 로 두자. 먼저 이전의 판 board 와 움직이는 방향 di 를 넘겨받아, 움직임이 ..
[BOJ] 16235. 나무 재테크
문제 나무 재테크 (https://www.acmicpc.net/problem/16235) 풀이 1. 초기 접근 문제조건 해석 역시 삼성 문제는 뭔가 글이 많다. 세세하게 잘 읽어야한다. 두번 세번 읽어줘야 한다. 문제를 잘 읽고 코딩하자. 삼성 문제의 대표적인 시뮬레이션 문제다. 문제에서 주어진 대로 그냥 짜기만 하면 된다. 핵심은, 과연 올바른 자료구조로 잘 구현할 수 있는가? 다. 알고리즘 정말 문제에 나온대로 하나씩 코딩하면 된다. 핵심은, 나이가 어린 나무들부터 양분을 섭취해야하는데, 이를 위해 deque 를 썼다. 자세한 건 코드 주석 참조. 코드 from collections import deque dxs = [-1, -1, 0, 1, 1, 1, 0, -1] dys = [0, 1, 1, 1, ..
[BOJ] 13460. 구슬 탈출 2
문제 구슬 탈출 2 (https://www.acmicpc.net/problem/13460) 풀이 1. 초기 접근 문제조건 해석 판이 주어지고, 스텝에 따라 판 위에 구슬의 위치가 규칙적으로 달라진다. 목표하는 위치에 도달하기 위한 "최소" 스텝을 구해야 한다. BFS 문제다. 알고리즘 이번 문제는 조금 까다로웠는데, step by step 으로 하나씩 코드화 해보자. 1) 먼저 기본적인 입력과 BFS 들을 만든다. 메인 코드는 아래와 같다. from collections import deque dxs = [-1, 0, 1, 0] dys = [0, 1, 0, -1] # n, m을 입력받고, board에 판을 저장한다. n, m = list(map(int, input().split())) board = [l..