본문 바로가기

알고리즘 문제풀이/백준44

[백준 13460] 구슬 탈출2(JAVA) https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' 로 이루어져 있다. '.'은 빈 칸을 의미하고, '#'은 공이 이동할 수 없는 장애물 또는 벽을 의미하며, 'O'는 구멍의 위치를 의미한다. 'R'은 빨간 구슬의 위치, 'B'는 파란 구슬의 위치이다. 입력되는 모든 보드 www.acmicpc.net 7달 전에 풀다 포기한 문제였다..^_ㅠ 생각해줘야 하는 조건이 많아서 주의 해야 한다. 이동 후, 빨간 구슬과 파란 구슬이 겹.. 2020. 3. 5.
[백준 2054] 괄호의 값(JAVA) https://www.acmicpc.net/problem/2504 2504번: 괄호의 값 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()( www.acmicpc.net 여는 괄호 (,[ 이면 스택에 넣어주고, 닫는 괄호면 스택의 가장 끝에 들어있는 값이 맞는 짝인지 확인해줬다. val 값을 1로 두고 , .. 2020. 3. 4.
[백준 2174] 로봇 시뮬레이션(JAVA) https://www.acmicpc.net/problem/2174 2174번: 로봇 시뮬레이션 문제 가로 A(1≤A≤100), 세로 B(1≤B≤100) 크기의 땅이 있다. 이 땅 위에 로봇들이 N(1≤N≤100)개 있다. 로봇들의 초기 위치는 x좌표와 y좌표로 나타난다. 위의 그림에서 보듯 x좌표는 왼쪽부터, y좌표는 아래쪽부터 순서가 매겨진다. 또한 각 로봇은 맨 처음에 NWES 중 하나의 방향을 향해 서 있다. 초기에 서 있는 로봇들의 위치는 서로 다르다. 이러한 로봇들에 M(1≤M≤100)개의 명령을 내리려고 한다. 각각의 명령은 순차적으로 www.acmicpc.net 위 그림과 같이 맵이 일반적인 다른 문제들과 다르게, 행번호가 밑에서 부터 1로 시작한다. 그래서 맵을 상하반전 시켜서 생각해봤다... 2020. 3. 4.
[백준 1966] 프린터 큐(JAVA) https://www.acmicpc.net/problem/1966 1966번: 프린터 큐 문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 www.acmicpc.net 큐를 q1(오리지널 큐), q2(임시 큐)로 두 개 만들어서 풀었다. q1의 맨 앞의 값을 미리 빼놓고, 큐에 들어 있는 나머지 값들과.. 2020. 3. 4.
[백준 2023] 신기한 소수(JAVA) https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수이고, 7도 소수이다. 즉, 왼쪽부터 1자리, 2자리, 3자리, 4자리 수 모두 소수이다! 수빈이는 이런 숫자를 신기한 소수라고 이름 붙였다. 수빈이는 N자리의 숫자 중에서 어떤 수들이 신기한 소수인지 궁금해졌다. N이 주어졌을 때, 수빈이를 위해 N자리 신 www.acmicpc.net dfs로 문자열 뒤에 숫자를 붙여가면서 소수인지 체크해주었다. 소수인지 판별할 때 sqrt값을 사용하여 시간을 절약할 수 있었다. i.. 2020. 3. 3.
[백준 1764] 듣보잡(JAVA) https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다. www.acmicpc.net HashSet에 듣도 못한 사람을 넣어 놓고, 보도 못한 사람을 입력 받아 HashSet에 들어 있는 사람이면 ans에 넣어주었다. 사전순으로 출력하기 위해 sort한 다음 답을 출력했다. import java.io.BufferedReader; import java.io.In.. 2020. 3. 3.
[백준 1389] 케빈 베이컨의 6단계 법칙(JAVA) https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻이다. A와 B가 친구이면, B와 A도 친구이며, A와 B가 같은 경우는 없다. 친구 관계는 중복되어 들어올 수도 있으며, 친구가 한 명도 없는 사람은 없다. 또, 모든 사람은 친구 관계로 연결되어져 있다. www.acmicpc.net map배열을 만들고 친구 관계이면 1로 값을 변경해 주었다. 그 다음 bfs로 몇단계 거치는 지 확인하여 total배열에 저장한 후 답을 구했다... 2020. 3. 1.
[백준 14503] 로봇청소기(JAVA/C++) https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음 www.acmicpc.net 이전에 C++로 풀었던 문제이다. JAVA로 다시 풀어 보았다. C++로 풀었을 때는 bool f변수를 사용해서 종료 조건을 확인.. 2020. 3. 1.