Java

문제 12789번: 도키도키 간식드리미 인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두 www.acmicpc.net 접근 방식 스택을 활용해서 풀 수 있는 문제다. 주어진 입력을 순회하면서 크게 두 가지 경우로 나누어 처리해 주면 되는데 바로 현재 입력값이 now와 같은지 다른지이다. now는 1부터 시작하는 변수를 선언하여 해당 순서가 간식을 받을 때마다 1씩 증가시켜 주면서 다음 순서를 확인할 수 있게 해주는 변수다. 만약 현재 사람이 간식을 받을 순서가 맞다면 스택에 넣지 않고 그대로 now를 1 증가시켜 준 뒤에 남아있는 스택을 확인하면서 now와 일치하는 값이 ..
문제 22233번: 가희와 키워드 1번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, floyd, os가 됩니다. 2번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, os가 됩니다. map은 1번째 글과 2번째 글에 중복으로 등장하였음을 www.acmicpc.net 접근 방식 HashSet을 사용해서 처음 키워드를 저장한 후에 글을 작성할 때마다 삭제해 주고 사이즈를 출력해주기만 하면 된다. 풀이 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringToke..
문제 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net 접근 방식 각 확장자인 파일의 개수를 Map을 이용하여 카운팅하여 확장자명의 사전 순으로 개수와 같이 출력해주면 된다. 키를 기준으로 정렬된 상태를 유지하면 되기 때문에 TreeMap을 사용하면 효율적으로 풀 수 있다. 풀이 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamRe..
문제 4358번: 생태학 프로그램은 여러 줄로 이루어져 있으며, 한 줄에 하나의 나무 종 이름이 주어진다. 어떤 종 이름도 30글자를 넘지 않으며, 입력에는 최대 10,000개의 종이 주어지고 최대 1,000,000그루의 나무가 주어 www.acmicpc.net 접근 방식 사전순으로 출력하기 위해 키값을 기준으로 정렬할 수 있는 TreeMap을 사용하여 각 나무가 입력으로 들어올 때마다 해당 키의 값을 1씩 증가시켜 주면 된다. 이때 입력을 한 줄씩 받을 때마다 카운트를 하여 총 입력수를 기록해 두고 이를 나중에 출력 시에 사용해 확률을 계산해 주면 된다. 정확히 소수점 넷째 자리까지만 출력해야 하고 적거나 많으면 틀리기 때문에 자바는 String.format을 이용해 자릿수를 맞춰서 출력해 주면 된다...
문제 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 접근 방식 구현해야 할 기능은 크게 세 가지로 첫 번째는 같은 뿌요가 4개 이상 이어진 지 확인하고 터트리는 것이고, 두 번째는 남은 뿌요들을 빈 공간으로 내려주는 기능이고, 마지막은 4개 이상이 이어져 터진 경우 위 과정을 재귀호출을 통해 반복하는 것이다. 우선 첫 번째 기능은 필드를 순회하며 뿌요를 발견할시 BFS로 같은 뿌요인 경우만 탐색을 하며 기록해 두었다 4개 이상인 경우에는 기록해 둔 좌표의 뿌요들을 빈 공간으로 바꿔준다..
문제 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 접근 방식 M개 이상 13개 이하의 치킨집이 있을 때, M개의 치킨집을 골라 가장 적은 치킨 거리를 구해야 한다. 입력만 보면 그래프 문제처럼 보이기도 하지만 그래프를 쓸 일은 없다. 리스트 두 개를 만들어 입력을 받으면서 집과 치킨집의 좌표를 담아준 후에 두 리스트를 반복문을 돌면서 각 집과 치킨집들의 거리를 모두 구해준다. 그 후 백트래킹으로 M개의 치킨집을 고른 후에 선택된 치킨집들과 집들의 치킨 거리를 구한 후 최소 치킨 거리를 ..
문제 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 접근 방식 이런 BFS 문제는 물의 입장에서 먼저 BFS를 진행하며 시간을 기록해둔 후에 고슴도치의 입장에서 BFS를 진행해 물보다 먼저 도착할 수 있는 곳으로만 탐색을 진행해주면 된다. 풀이 public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); St..
문제 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 접근 방식 정말 있는 그대로 구현하기만 하면 되서 티어에 비해 쉬운 문제다. 많이들 실수하는 부분이 전역 변수 관리나 객체의 얕은 복사인데 이 부분만 조심하면 풀이에 어려움은 없다. 움직이고자 하는 방향의 끝 인덱스에서부터 거꾸로 탐색해주면서 수가 같다면 합쳐주면 되는데 0인 경우를 조심해야 한다. 현재 바라보고 있는 곳이 0이라면 어떤 값이든 들어올 수 있으니 처음 마주치는 값을 옮겨주고 그 후에 같은 값이 있는지 또 확인해준다..
da9dac
'Java' 카테고리의 글 목록 (3 Page)