목록알고리즘/백준 (170)
곽로그
문제 www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 � www.acmicpc.net 보완해야하는 점 1) 문제이해 - 처음 문제를 어떻게 이해하는지가 매우매우매우매우 중요! 잘못이해하고 풀면 시간은 시간대로 멘탈은 멘탈대로 나간다. - 내가 잘못 이해한 부분은 " 톱니바퀴 A를 회전할 때, 그 옆에 있는 톱니바퀴 B와 서로 맞닿은 톱니의 극이 다르다면, B는 A가 회전한 방향과 반대방향으로 회전하게 된다" 인데 회전한 다음에 마주한 바퀴의 극을 비교해야하는데 회전하기 전 처음 상..
문제 www.acmicpc.net/problem/16928 16928번: 뱀과 사다리 게임 첫째 줄에 게임판에 있는 사다리의 수 N(1 ≤ N ≤ 15)과 뱀의 수 M(1 ≤ M ≤ 15)이 주어진다. 둘째 줄부터 N개의 줄에는 사다리의 정보를 의미하는 x, y (x < y)가 주어진다. x번 칸에 도착하면, y번 칸으 www.acmicpc.net 실수 했던 것 - 방문 체크 안함 (→메모리초과) - "모든 칸은 최대 하나의 사다리 또는 뱀을 가지고 있으며, 동시에 두 가지를 모두 가지고 있는 경우는 없다"는 조건 : 사다리칸 - 이동 - 뱀칸 이런식으로 계속 이동할 수 있다고 생각. 현재칸에 뱀 또는 사다리가 있어서 한번 이동을 하면 끝 기억해야 할 것 - queue에는 더이상 움직일 수 없는 최종 위..
새 버전(2021.02.25) alwaysbemoon.tistory.com/233 [백준 14503, Java] 로봇청소기 문제 www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타 alwaysbemoon.tistory.com import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.LinkedList; import java.util...
문제 www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크� www.acmicpc.net 접근 1. 문제를 3개로 나누었다. 벽세우기/ 바이러스 확산/ 안전지역 count 2. 벽세우기 문제는 NK과 K(1) 과 같다. map을 순회하며 셀이 빈칸인 곳에 벽을 세운다. 3. 바이러스 확산은 바이러스인 셀을 기준으로 상하좌우 셀 중 빈칸인 곳에 바이러스를 만들고, 다시 이 바이러스 셀을 기준으로 상하좌우를 탐색한다. BFS 를 이용한다. 코드 import java.io.BufferedReader; impo..
문제 www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 문제이해 "확산은 미세먼지가 있는 모든 칸에서 동시에 일어난다." 를 잘못구현했다. 처음에는 for문으로 하나씩 돌면서 배열에 확산된 후의 양을 카운트 했다. 이거는 동시에 확산되는게 아니라 순차적으로 확산되는 거다. 따라서 확산량을 카운트 하기위한 배열을 따로 만든 후, 카운트가 끝나면 원래의 배열에 확산량을 더해줘야한다.(그리고 for 문으로 순차적으로 돌면 미세먼가 확산된 곳에 재확산이 발생한다) ..
문제 www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제이해 1) 이 문제를 이해하는데 가장 시간이 오래걸렸던 부분 L= 2 이고 222333이 주어졌다고 했을때 이게 왜 길이 되는지 이해가 안갔다. 내가 이해한 것은 222갯수가 3이니까 3인 경사로를 만들어야하는데 주어진 조건은 2라서 길이 될 수 없다고 생각했다. 2) 문제 독해!! 결국엔 문제를 얼마나 빨리, 정확하게 이해하는 게 관건인 것 같다. 문제를 푸는데 급급하지 말고 충분한 시간을 가지고서 문제를 정확히 이해한다음..
문제 www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net 접근방법 1. 연산자 조합 만들기 (makeOperatorCombination) 2. 만들어진 연산자 조합 각각에 대해서 수열과연산 (operate) 소스코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws E..
문제 www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 코드 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(..