본문 바로가기

알고리즘77

[알고리즘] 알고스팟 (백준 1261번) 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 처음엔 이분탐색을 이용해야하는 줄 알았는데 시간 초과, 메모리 초과가 났다. 이후에 BFS로 풀었는데 원래는 다익스트라 문제다. 결론적으로 다익스트라가 시간, 메모리가 더 적게 걸린다. Solution 1. BFS 버전 import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWrite.. 2020. 10. 6.
[알고리즘] DSLR (백준 9019번) 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 � www.acmicpc.net 특정 목적지점까지 가는데 필요한 최소해를 구하는 BFS 완전탐색 문제다. Solution 전체 코드 import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.lang.StringBuilder import java.util.* var br = BufferedR.. 2020. 10. 5.
[알고리즘] 뱀 (백준 3190번) 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 삼성 기출의 시뮬레이션 문제다. 지도 상에서 뱀이 움직이는 것을 구현해야 하는 문제다. Solution 1. 전역 변수 var N = 0 var K = 0 lateinit var map : Array val UP = 0 val DOWN = 1 val LEFT = 2 val RIGHT = 3 var orders : Queue = LinkedList() var snake = ArrayList() 기본 변수들과 상하좌우를 나타내는 상수, 명령들을 보관하고 있는 큐와 뱀을 표.. 2020. 10. 5.
[알고리즘] 2048 (Easy) (백준 12100번) 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 삼성 기출 문제인데 정말 삼성스러운 문제라고 할 수 있다. 시뮬레이션 + 브루트 포스 문제다. 이전의 다른 삼성 기출 문제들과 마찬가지로 맵에서 여러 물체를 동시에 움직이는 것을 구현해야한다. Solution 1. 전역 변수 var N = 0 lateinit var map : Array var max = 0 val UP = 0 val DOWN = 1 val LEFT = 2 val RIGHT = 3 상하좌우를 나타내는 상수들과 그 외의 .. 2020. 10. 5.