본문 바로가기
반응형

Problem Solving155

백준 1013 : Contact https://www.acmicpc.net/problem/1013 1013번: Contact 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트 케이스에 대해 전파를 표현하는, { 0, 1 }만으로 이루어진 문자열이 공백 없이 주어진다. 문자열 길이는 (1 ≤ www.acmicpc.net [ 문제풀이 ] 정규 표현식을 사용할 줄 알면 공짜인 문제이다. Java에서는 Pattern과 Matcher 클래스를 통해 정규 표현식을 사용할 수 있다. 주어진 패턴 (100+1+ | 01)+으로 Pattern을 만든 후 Matcher를 통해 입력받은 문자열을 분석해주면 된다. Pattern의 형태는 다음과 같다. String regex = "^(100+1+|01)+$"; 간단하게 설.. 2021. 8. 5.
백준 10159 : 저울 https://www.acmicpc.net/problem/10159 10159번: 저울 첫 줄에는 물건의 개수 N 이 주어지고, 둘째 줄에는 미리 측정된 물건 쌍의 개수 M이 주어진다. 단, 5 ≤ N ≤ 100 이고, 0 ≤ M ≤ 2,000이다. 다음 M개의 줄에 미리 측정된 비교 결과가 한 줄에 하나씩 www.acmicpc.net [ 문제풀이 ] 문제를 해석해보면 결국 내가 비교할 수 없는 물건의 개수는 N - 1(나) - (내가 방문할 수 있는 정점 + 나에게 방문하는 정점)이다.따라서 dfs를 통해 모든 정점을 탐색하면서 확인해주면 쉽게 해결할 수 있다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.In.. 2021. 8. 4.
백준 20061 : 모노미노도미노 2 https://www.acmicpc.net/problem/20061 20061번: 모노미노도미노 2 모노미노도미노는 아래와 같이 생긴 보드에서 진행되는 게임이다. 보드는 빨간색 보드, 파란색 보드, 초록색 보드가 그림과 같이 붙어있는 형태이다. 게임에서 사용하는 좌표 (x, y)에서 x는 행, www.acmicpc.net [ 문제풀이 ] 단순 노가다 빡구현 문제이다. 주어진 조건에 맞게 블록들을 시뮬레이션 시켜주면 된다. 빡구현 문제는 설계를 잘해도 실수 한 번만하면 디버깅하는데 정말 힘든 것 같다. move 배열을 이용하여 블록들을 이동시켰는데 연한 영역 부분을 빠뜨리는 바람에 굉장히 힘들었다. import java.io.BufferedReader; import java.io.BufferedWriter.. 2021. 8. 3.
백준 17825 : 주사위 윷놀이 https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 주사위 윷놀이는 다음과 같은 게임판에서 하는 게임이다. 처음에는 시작 칸에 말 4개가 있다. 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 www.acmicpc.net [ 문제풀이 ] 단순 구현 문제이다. 총 경우의 수가 4^10 = 약 100만 정도이기 때문에 모든 경우의 수를 다 시뮬레이션 해보면 된다. 조심해야 할 점은 같은 번호의 칸이 존재하기 때문에 놓을 수 있는 경우도 생긴다. 이를 관리하기 위해 각 말에다 방향을 부여하여 관리한다. 16, 22, 24, 26, 28은 방향이 다르다면 같은 번호라도 놓을 수 있다. 30은 앞의 칸보다 조금 생각해야 할.. 2021. 8. 3.
백준 17822 : 원판 돌리기 https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net [ 문제풀이 ] 이번에도 동일하게 시뮬레이션 문제이다. 주어진 조건대로 구현하면 정답을 쉽게 맞힐 수 있을 것이다. 조건을 하드 코딩해서 풀어도 되지만 하드 코딩하면 실수 시 디버깅하기가 힘들기 때문에 조금 구현하기 쉽게 설계하여 풀었다. ​1. 먼저 방향을 한 방향으로 통일한다. 반시계 방향을 시계 방향으로 변경 후 한 방향으로 회전시키는 함수만 구현하면 훨씬 간단하다. ​2. .. 2021. 8. 3.
백준 17837 : 새로운 게임 2 https://www.acmicpc.net/problem/17837 17837번: 새로운 게임 2 재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하 www.acmicpc.net [ 문제풀이 ] 이번에도 시뮬레이션 문제이다. 2차원 List를 선언하여 말들을 관리해 주면 간단하게 해결할 수 있다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWri.. 2021. 8. 3.
백준 17779 : 게리맨더링 2 https://www.acmicpc.net/problem/17779 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름 www.acmicpc.net [ 문제풀이 ] N의 범위가 작기 때문에 가능한 x, y, d1, d2 경우를 모두 구해서 최솟값을 구하면 되는 문제이다. 전체를 5구간으로 먼저 채워놓고 1, 2, 3, 4 구간을 업데이트해주는 식으로 구현하면 조금 더 쉽게 구현할 수 있다. 각 구간마다 경계선 안쪽으로 가는 구간만 조심해서 범위를 지정해 주면 쉽게 해결할 수 있을 것이다. import java.io.BufferedReader; im.. 2021. 8. 3.
백준 17142 : 연구소 3 https://www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net [ 문제풀이 ] 바이러스를 선택할 수 있는 모든 경우의 수를 다해보면 해결할 수 있는 문제이다. 다만, 조심해야 할 점이 두 가지 있다. ​첫 번째는 마지막 예제처럼 바이러스를 퍼트릴 빈 공간(0)이 없다면 바이러스를 퍼뜨리지 말고 바로 종료해 줘야 한다. ​두 번째는 선택되지 않은 바이러스 영역이다. 선택되지 않은 바이러스(2)를 활성화시켜 다른 빈 공간(0)으로 퍼뜨릴 수 있다면 활성화시키고, 만약 선.. 2021. 8. 3.
백준 17140 : 이차원 배열과 연산 https://www.acmicpc.net/problem/17140 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net [ 문제풀이 ] 주어진 조건에 따라 시뮬레이션을 돌리는 문제이다. 100개를 초과하는 숫자는 제외하기 때문에 이 부분만 조심해서 구현한다면 쉽게 해결할 수 있을 것이다. import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReade.. 2021. 8. 3.
반응형