본문 바로가기

전체 글59

[백준 1707] 이분 그래프(JAVA) https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K(2≤K≤5)가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V(1≤V≤20,000)와 간선의 개수 E(1≤E≤200,000)가 빈 칸을 사이에 두고 순서대로 주어진다. 각 정점에는 1부터 V까지 차례로 번호가 붙어 있다. 이어서 둘째 줄부터 E개의 줄에 걸쳐 간선에 대한 정보가 주어지는데, 각 줄에 인접한 두 정점의 번호가 빈 칸을 사이에 두고 주어 www.acmicpc.net 이분 그래프는 각 노드마다, 자기 자신과 연결된 노드의 색깔이 달라야 하는 그래프이다. 노드의 색깔을 모두 0으로 두고 dfs로 1 .. 2020. 3. 11.
[SWEA 7396] 종구의 딸이름 짓기(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWm8hNu6llcDFASj SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 많이 헤맸던 문제이다. ㅠㅠ 큐 하나를 사용해서 해보려 했지만, 결국 큐 두개를 사용해서 풀었다. 가장 사전순이 빠른 문자열을 구해야 했다. 그래서 현재 문자가 들어갈 자리에 가장 사전순이 빠른 문자열을 찾아주었고, 다음 큐에는 그 문자에서 탐색한 것만 넣기 위해 임시큐에 값을 넣어준 다음, 다시 원래 큐에 복사해줬다. import java.io.BufferedReader; import java.i.. 2020. 3. 10.
[백준 14499] 주사위 굴리기(JAVA/C++) 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개의 줄에 지도에 쓰여 있는 수가 북쪽부터 남쪽으로, 각 줄은 서쪽부터 동쪽 순서대로 주어진다. 주사위를 놓은 칸에 쓰여 있는 수는 항상 0이다. 지도의 각 칸에 쓰여 있는 수는 10을 넘지 않는 자연수 또는 0이다. 마 www.acmicpc.net 7달 전에 C++로 풀었을 때는 가로 세로 배열을 각각 만들었다. 이번에 자바로 풀 때는 좀 더 간단하게 일차원 배열 하나만 써.. 2020. 3. 10.
[SWEA 7793] 오! 나의 여신님(JAVA) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWsBQpPqMNMDFARG SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 악마큐, 수연큐 두 개를 만들어서 큐사이즈만큼 bfs를 돌려줬다. 테스트케이스 10개중 6개만 맞았다고 떠서 틀린 거 찾느라 고생했다.ㅠㅠ while문 종료조건을 수연큐가 비면 종료로 했어야했는데 악마큐로 잘못 썼었다.. 큐를 두개 이상 사용할 때는 주의해서 짜자^^...... import java.io.BufferedReader; import java.io.FileInputStream; impor.. 2020. 3. 10.
[SWEA 5656] 벽돌 깨기(JAVA/C++) https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRQm6qfL0DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 재귀를 이용해서 N번까지 구슬을 쏴주고, 큐를 이용해서 블록 깨기, 맵이동을 시켜줬다. 맵이동시킬 때 H를 N으로 오타내서 시간을 낭비했다.. 자잘한 실수를 조심하자! [JAVA] import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; impor.. 2020. 3. 10.
[백준 14500] 테트로미노(JAVA/C++) https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누 www.acmicpc.net ㅗㅓㅏㅜ모양을 제외한 블럭들은 상하좌우방향으로 탐색을 4번까지 하면 구해진다. 그러므로, ㅗㅓㅏㅜ모양과 일반적인 블럭들을 따로 처리.. 2020. 3. 9.
[백준 12100] 2048(Easy)(JAVA) https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net 큐를 이용해서 문제를 풀었다. 상하좌우 방향으로 각각 미는 것을 생각해서 계산을 해줬는데, 맵을 90도씩 돌려서 계산하면 더 코드가 간단해질 것이다. 맵을 복사해두는 copy배열을 전역으로 둬서 한번 틀렸다.ㅠㅠ 재귀일 때는 맵카피를 주의하도록 하자! import java.io... 2020. 3. 8.
[백준 16987] 계란으로 계란치기(JAVA/C++) https://www.acmicpc.net/problem/16987 16987번: 계란으로 계란치기 원래 프로그래머의 기본 소양은 팔굽혀펴기를 단 한 개도 할 수 없는 것이라고 하지만 인범이는 3대 500을 넘기는 몇 안되는 프로그래머 중 한 명이다. 인범이는 BOJ에서 틀린 제출을 할 때마다 턱걸이를 5회 하는 기적의 운동 루틴을 통해 뇌와 근육을 동시에 단련한다. 근육을 단련할 때 식단이 정말로 중요하다는 것을 아는 인범이는 탄수화물이 많은 밥이나 빵 따위의 아침 식사를 대신해 단백질이 많은 계란찜을 해먹는다. 계란찜을 먹기 위해서는 계란을 깨야 하 www.acmicpc.net 이 문제도 이전에 C++로 풀어본 문제이다. 내구성 배열(S)과 무게 배열(W)을 만들어서 내구성 배열이 0이하인 것은 깨진.. 2020. 3. 7.
[백준 14502] 연구소(JAVA/C++) https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽으로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. www.acmicpc.net 이전에 C++로 풀었던 문제이다. JAVA로 다시 풀어보았다. map 입력 받을 때 벽을 세울 수 있는 공간이면 ArrayList(C++은.. 2020. 3. 6.