Java 144

[백준]14499번 주사위 굴리기 - Java

문제 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 풀이 시뮬레이션 문제이다. 주사위를 어떻게 굴릴지만 구현하면 된다! 나는 주사위 전개도를 2차원 배열로 보고 동서북남 방향으로 굴릴 경우, 어떻게 전개도가 바뀔지 생각해서 구현했다. 1차원 배열 2개로 전개도를 구현하거나, 클래스를 만들어서 주사위의 윗면, 아랫면, 앞면, 뒷면, 왼쪽면, 오른쪽면을 구현해도 같은 결과를 얻을 ..

[백준]3055번 탈출 - Java

문제 https://www.acmicpc.net/problem/3055 3055번: 탈출 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제 www.acmicpc.net 풀이 bfs 문제임! 주의할 점은 고슴도치는 물이 찰 예정인 칸으로 이동할 수 없다. 즉, 다음 시간에 물이 찰 예정인 칸으로 고슴도치는 이동할 수 없다. 이동할 수 있으면 고슴도치가 물에 빠지기 때문이다. 이렇기 때문에 물을 먼저 bfs로 퍼지게 하고 그 후에 고슴도치를 bfs로 이동시켜야 한다! 나는 큐를 두개 만들어서 풀었지만 큐 하나로도 가능할 것 같다!! 자세한건 주석으로! 코드 // 3055번..

[백준]1743번 음식물 피하기 - Java

문제 https://www.acmicpc.net/problem/1743 1743번: 음식물 피하기 첫째 줄에 통로의 세로 길이 N(1 ≤ N ≤ 100)과 가로 길이 M(1 ≤ M ≤ 100) 그리고 음식물 쓰레기의 개수 K(1 ≤ K ≤ N×M)이 주어진다. 그리고 다음 K개의 줄에 음식물이 떨어진 좌표 (r, c)가 주어진다 www.acmicpc.net 풀이 걍 흔한 dfs나 bfs 문제이다! 나는 dfs로 풀었음! 정답은 음식물 쓰레기의 최대 크기이므로 static 변수로 선언해서 dfs한번이 끝나면 음식물 쓰레기의 크기를 측정하여 최신화해주는 방식을 사용했다. 자세한건 주석으로! 코드 // 1743번 음식물 피하기 // https://www.acmicpc.net/problem/1743 packag..

[백준]5212번 지구 온난화 - Java

문제 https://www.acmicpc.net/problem/5212 5212번: 지구 온난화 첫째 줄에 지도의 크기 R과 C (1 ≤ R, C ≤ 10)가 주어진다. 다음 R개 줄에는 현재 지도가 주어진다. www.acmicpc.net 풀이 그냥 이차원 배열 돌면서 3면 이상이 바다면 땅을 물에 잠기게 해주면 된다. 새로운 정답 2차원 배열 지도를 만들어서 물에 잠긴 땅이 다음 칸에도 영향을 주지 않게 하였음! 정답 지도를 그릴 때는 다시 정답 배열을 돌면서 범위 체크를 위한 변수를 최신화하고 그 범위 내의 지도만 그려줌! 위의 두 가지만 조심하면 어렵지 않게 금방 풀 수 있는 문제임!!! 자세한 건 주석으로!! 코드 // 5212번 지구 온난화 // https://www.acmicpc.net/pro..

[백준]11559번 Puyo Puyo - Java

문제 https://www.acmicpc.net/problem/11559 11559번: Puyo Puyo 총 12개의 줄에 필드의 정보가 주어지며, 각 줄에는 6개의 문자가 있다. 이때 .은 빈공간이고 .이 아닌것은 각각의 색깔의 뿌요를 나타낸다. R은 빨강, G는 초록, B는 파랑, P는 보라, Y는 노랑이다. www.acmicpc.net 풀이 처음에 어떻게 풀지 설계를 안하고 풀다보니까 중간에 한번 엎었다... 문제 좀 똑바로 읽고 풀자 쫌...!!!!! 쭈욱 돌면서 뿌요가 있으면 같은 색의 뿌요가 4개 이상 인접해있는지 dfs()로 판단하다가 4개가 넘어가면 그 위치에서 다시 dfsBomb()를 돌려서 연결되어 있는 뿌요를 다 없앰! 그리고 다른 색의 뿌요도 4개 이상이 인접해 있는 경우가 있으니까..

[백준]14891번 톱니바퀴 - Java

문제 https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴 www.acmicpc.net 풀이 아 처음에 톱니바퀴의 위치에 따라서 옆 톱니바퀴가 회전하는지 안하는지를 생각을 안해줘서 너무 노가다로 풀었다,,,, 진짜 너무 빡침 ㅠ 이래서 설계가 중요하구나 느꼈음./... 중간에 코드 짜다가 아 이렇게 풀면 안되는구나 하고 알았는데 톱니바퀴 4개라서 노가다도 될 것 같고, 이미 돌아가기엔 너무 늦었으니까 이렇게 풀고 다음에 톱니바퀴2 문제나 이 문제 한번 더 풀어야 겠다 라고 ..

[백준]7569번 토마토 - Java

문제 https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 https://seokmimmmmmmmm.tistory.com/98 [백준]7576번 토마토 - Java 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000.. ..

[백준]2606번 바이러스 - Java

문제 https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍의 수가 주어 www.acmicpc.net 풀이 뭐 여러가지 방법을 풀 수 있겠지만 인접 행렬로 풀면 쓸데없는 메모리 활용이 좀 있을 것 같다. 그래서 ArrayList를 활용한 인접 리스트로 풀었음. 방문 체크 배열을 이용해서 이미 방문한 곳은 체크를 하고 인접한 애들 중 방문하지 않은 애들인 경우에만 answer++하고 dfs를 한번 더 탔음! 밑에 코드 참고! 코드 // 2606번 바이러스 // https://www.acmicpc.n..

[백준]3190번 뱀 - Java

문제 https://www.acmicpc.net/problem/3190 3190번: 뱀 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임 www.acmicpc.net 풀이 시뮬레이션 문제이다. 뱀을 큐로 생각했고, 다음 칸의 좌표를 뱀 큐에 넣어주고 그 칸이 사과면 큐의 길이를 줄이지 않고(poll()하지 않고) 사과가 아니면 큐의 길이를 줄였음(poll()했음). 그리고 방향 전환은 4방향을 시계방향으로 해줬음(시계 반대 방향이여도 상관 없음). 4방 탐색이므로 +를 해서 4가 넘어가면 %4 연산을 통해서 방향이 돌고 돌 수 있게 해줌 이것들만 생각하면 잘 풀..

[SWExpertAcademy]구르는 돼지의 버섯 찾기 - Java

문제 걍 쉬운 문제임 풀어보셈 돼지는 매우 뛰어난 후각을 지녔다. 프랑스 요리에서 최고의 재료로 치는 송로버섯을 찾는 일에 돼지가 이용된다. 땅속의 다이아몬드라는 별명에서도 알 수 있듯이 송로버섯은 땅속에서만 자란다. 돼지는 뛰어난 후각으로 이 송로버섯을 기가 막히게 찾아낸다. 너무 살이 쪄서 굴러다니는 돼지는 평지 또는 오르막길을 올라갈 수는 없지만 내리막길은 누구보다 빠르게 이동이 가능하다. 송로버섯을 좋아하는 은서아빠는 이 귀여운 구르는 돼지를 이용해 송로버섯을 찾고자 한다. 산의 지형은 아래와 같이 표현되고,(입력 예시 참고) 이 산에서 가장 왼쪽 위 칸에서 출발해 가장 오른쪽 아래 칸으로 도착하는 방법은 예시에서는 세가지가 있음! 더 많은 송로버섯을 채취하기 위해서는 더 많은 경로로 산을 탐색해..

[SWExpertAcademy]토끼 경주 - Java

문제 걍 쉬운 문제임 풀어보셈 토끼는 앞다리에 비해 뒷다리가 길고 튼튼하다. 뒷다리가 길어 높이 뛰어오를 수 있으며 오르막도 곧잘 오르지만 내리막은 잘 달리지 못한다. A는 머리를 식힐겸 5마리의 토끼가 경주를 벌이는 토끼 경주장을 방문했다. A는 5마리의 토끼 중 얼마나 많은 토끼가 경주장을 완주할 수 있는지 알아보려고 한다. 경주장은 오르막길과 내리막길이 있으며, 각 지점마다 높이가 정해진다. 경주장의 각 지점의 높이 Hi 는 0보다 크거나 같고 100보다 작거나 같다. 경주장의 길이는 10이며 아래는 경주장 샘플이다. 0 20 50 70 50 60 40 50 30 0 이 샘플 경주장에서 1번째 지점에서 2번째 지점으로의 오르막은 20미터, 2번째 지점에서 3번째 지점으로의 오르막은 30미터, 그리고..

[백준]14719번 빗물 - Java

문제 https://www.acmicpc.net/problem/14719 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 풀이 어떻게 풀지 생각하는데 약간 시간이 걸렸다 제일 왼쪽이랑 오른쪽 블록을 제외한 그 사이에 있는 블록들 머리 위에만 빗물이 쌓일 수 있기 때문에, 그 점을 생각하면 쉽게 풀림! 자세한 설명은 주석을 달아놨으니 참고하셈! 코드 // 14719번 빗물 // https://www.acmicpc.net/problem/14719 package BAEKJOON; import jav..

[백준]9250번 맥주 마시면서 걸어가기 - Java

문제 https://www.acmicpc.net/problem/9205 9205번: 맥주 마시면서 걸어가기 송도에 사는 상근이와 친구들은 송도에서 열리는 펜타포트 락 페스티벌에 가려고 한다. 올해는 맥주를 마시면서 걸어가기로 했다. 출발은 상근이네 집에서 하고, 맥주 한 박스를 들고 출발한다. www.acmicpc.net 풀이 플로이드 와샬 문제이다! 최근에 배웠음. 처음 설명을 들을 때는 되게 쉽네~ 라고 생각했지만 막상 문제를 풀어보니까 잘 모르겠더라 ㅎㅎㅎ 다익스트라가 한 정점에서 모든 정점으로의 최소 비용 거리를 구하는 알고리즘이라면, 플로이드 와샬은 모든 정점에서 모든 정점으로의 최소 비용 거리를 알 수 있음!! 다만 3중 for문을 돌기 때문에 크기가 크면 터질 수도 있으니까 조심하자!!! 경..

[SWExpertAcademy]5515번 2016년 요일 맞추기 - Java

문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWWOwecaFrIDFAV4 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 7의 배수하면 꼭 나오는 문제! 쉬운 문제이니까 걍 보면 될 듯함! 코드 // 5515 - 2016년 요일 맞추기 package d3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Nu..

[백준]2960번 에라토스테네스의 체 - Java

문제 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 풀이 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 이 사진처럼 체에 거르듯이 거르는 것이다! 코드 // 2960번 에라토스테네스의 체 // https://www.acmicpc.net/problem/2960 package BAEKJOON; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java...

[백준]3020번 개똥벌레 - Java

문제 https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 www.acmicpc.net 풀이 처음에 문제를 읽었을 때 정말 쉬운 문제라고 생각했음 근데 또 문제 안읽어서 주어지는 수들의 범위를 체크를 못함 또 또또 ㅠㅠㅠㅠ 1번 방법(오답) 그냥 높이별 부딪히는 횟수를 계산할 배열을 만들고 2중 for문을 돌면서 해당 배열에 저장해줌! 이렇게 풀면 당연히 시간초과,,,, 2번 방법(정답) 이분 탐색! 오답 코드 // 3020번 개똥벌레 // https://www.acmicpc.ne..

[SWExpertAcademy]1949번 [모의 SW 역량테스트] 등산로 조성 - Java

문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PoOKKAPIDFAUq SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 전형적인 삼성 기출 문제 중 하나인 것 같다. 최근에 삼성 기출 문제를 몇개 접했는데 다 너무 어려워서 손도 못대거나 못풀거나 했다. ㅠㅠㅠ 그래서 자신감도 없고 이런 문제만 보면 기가 죽었는데 최근에 풀었던 삼성 문제들 중에는 쉬운 편에 속하는 것 같아서 어찌저찌 풀었다. 문제에 조건들을 보면 숫자가 크지 않으므로 완전탐색이 가능하다는 것을 알 수 있고, 그냥 막 돌리면 되겠다 싶어서 ..

[백준]7576번 토마토 - Java

문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 풀이 토마토가 다 익는데까지 며칠이 걸렸는지 출력하는 문제이기 때문에 DFS로 풀면 답을 찾기 힘들 것이다. 그래서 BFS로 풀었음! 1번 방법(오답) BFS할 때 사용하는 큐의 Tomato 클래스는 익은 토마토의 위치와 며칠째에 익었는지를 나타내는 day를 멤버변수로 함! 큐에서 하나씩 빼서 다음 칸으로 갈 수 있는지 검사하며, 다음 칸을 큐에 넣어줄 때 day+1을 하면서..

[백준]14502번 연구소 - Java

문제 https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 풀이 허허,,, 풀긴 풀었는데 너무 더럽게 푼 것 같다,,, 느낌만 그런건가...?? 조합 + DFS로 풀었음! 중간에 막힌 부분이 있었는데 dfs돌려서 안전 영역 최대값을 조사한 후 map 배열을 초기화 해줄 때 초기화 시점이 헷갈려서 자꾸 벽을 하나도 안세울 때로 초기화를 해버려서 좀 시간이 걸렸다 ㅠㅠ 그래서 벽을 2개 세웠을 때의 map을 tempMap에 잠시 저장해놨다가 벽 3개 세우고 dfs돌..

[SWExpertAcademy]1249번 [S/W 문제해결 응용] 4일차 - 보급로 - Java

문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이 문제를 읽어보면 딱 다익스트라 쓰면 풀 수 있겠구나 하고 감이 온다. 출발지랑 도착지가 정해져있고 최소 비용을 구하는 거니까! 도로를 복구하는 시간 말고 최단 거리 같은 조건은 없으니까 별 다를게 없는 그냥 다익스트라 문제이다. https://seokmimmmmmmmm.tistory.com/84 [백준]4485번 녹색 옷 입은 애가 젤다지? - Java 문제 https://www.acmi..