본문 바로가기

algorithm/Baekjoon Online Judge5

[BOJ] 4991 로봇 청소기(Java) 문제 https://www.acmicpc.net/problem/4991 4991번: 로봇 청소기 각각의 테스트 케이스마다 더러운 칸을 모두 깨끗한 칸으로 바꾸는 이동 횟수의 최솟값을 한 줄에 하나씩 출력한다. 만약, 방문할 수 없는 더러운 칸이 존재하는 경우에는 -1을 출력한다. www.acmicpc.net 풀이 - 방의 정보를 입력받아 가구는 -1, 먼지는 1부터 증가하면서 번호를 매겨 높이(height)X너비(width) 크기의 이차원 int 배열 room에 저장한다. - 비트마스킹을 활용해 방문체크를 하기 위한 (1 2023. 2. 20.
[BOJ] 17141 연구소 2(Java) 문제 https://www.acmicpc.net/problem/17141 17141번: 연구소 2 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 승원이는 연구소의 특정 위치에 바이러스 M개를 놓을 것이고, 승원이의 신호와 동시에 바이 www.acmicpc.net 풀이 - 입력 시 2(바이러스)인 좌표를 VIRUSES에 추가하고, 1(벽)이 아닌 값(바이러스가 퍼질 수 있는 공간)의 개수를 센다. - 최소 시간을 n*n로 초기화 하고, 퍼트릴 바이러스 m개를 조합을 이용해 선택한다. - 선택된 바이러스를 Queue에 추가하고 BFS를 이용해 바이러스를 퍼뜨리며 퍼뜨린 시간으로 최소 시간을 갱신한다. - 빈 공간(empty)를 '바이러스가 퍼질 수 있는 공간 -.. 2023. 1. 11.
[BOJ] 21939 문제 추천 시스템 Version 1(Java) 문제 https://www.acmicpc.net/problem/21939 21939번: 문제 추천 시스템 Version 1 tony9402는 최근 깃헙에 코딩테스트 대비 문제를 직접 뽑아서 "문제 번호, 난이도"로 정리해놨다. 깃헙을 이용하여 공부하시는 분들을 위해 새로운 기능을 추가해보려고 한다. 만들려고 하는 명령 www.acmicpc.net 풀이 - 문제 번호와 문제 난이도를 저장할 Problem 클래스를 선언하고, 난이도 순 정렬을 위해 Comparable을 구현한다. - 문제를 난이도 순으로 저장할 TreeSet과 문제 번호와 문제 난이도를 저장할 Map을 선언한다. - N개의 문제 정보를 입력받아 Problem 객체를 생성해 TreeSet에 추가하고, 문제 번호와 난이도를 각각 Key, Val.. 2022. 12. 14.
[BOJ] 12904 A와 B(Java) 문제 https://www.acmicpc.net/problem/12904 12904번: A와 B 수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다. 이런 사실에 놀란 수 www.acmicpc.net 풀이 - T의 마지막 인덱스와 S의 길이를 저장 - T의 마지막 인덱스의 글자를 가져와 저장하고, T를 0~마지막 인덱스-1까지 자름 - T의 마지막 글자가 B이면 T를 뒤집음 - 2~3번째 과정을 T의 길이와 S의 길이가 같을 때까지 반복 - T와 S가 같으면 1, 아니면 0을 출력 소스 코드 import java.io.BufferedReader; im.. 2022. 3. 21.
[BOJ] 10157 자리배정(Java) 문제 https://www.acmicpc.net/problem/10157 10157번: 자리배정 첫 줄에는 공연장의 격자 크기를 나타내는 정수 C와 R이 하나의 공백을 사이에 두고 차례대로 주어진다. 두 값의 범위는 5 ≤ C, R ≤ 1,000이다. 그 다음 줄에는 어떤 관객의 대기번호 K가 주어진다. www.acmicpc.net 풀이 - 사각형의 가장 바깥 쪽 테두리부터 가장 안쪽 테두리까지 탐색하며 k가 속한 테두리를 찾는다. - r X c 사각형일 때 시작 위치 (x,y)에서의 대기번호가 1이라면 같은 테두리의 마지막 대기번호는 r*2 + c*2 - 4가 된다. - 마지막 대기번호보다 k가 크면 x,y는 1씩 증가, r, c는 2씩 감소, 다음 대기번호는 마지막 대기번호+1이 된다. - k가 속한.. 2022. 2. 27.