본문 바로가기

백준31

2667번: 단지번호붙이기 풀이 여러가지 방법으로 풀 수 있지만 dfs 카테고리에 있는 문제라 dfs를 이용해서 풀었습니다. graph[0][0] ~ graph[n-1][n-1] 까지 돌면서 방문하지 않은 곳에서 dfs를 호출합니다. dfs 함수 안에서 재귀로 dfs가 재호출 될 때마다 연결된 단지로 전진한 것이므로 count를 1씩 증가해줍니다. 처음에 호출한 dfs가 끝나면 count를 num안에 넣고 마지막에 출력할 수 있도록 저장하고, 단지 그룹 1개를 다 탐색한 것이므로 result를 1 증가시킨뒤 count를 0으로 초기화 합니다. 자바풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import j.. 2022. 2. 24.
2553번: 마지막 팩토리얼 수 풀이 방법은 두가지가 있습니다. 1. 산술적으로 풀이하는 방법. 2. 단순히 팩토리얼 값을 문자열로 변환하여 리버스한뒤 체크하며 풀이하는 방법. 자바는 오버플로우를 방지하기 위해서 result 값에 나머지연산을 한뒤 진행합니다. 자바 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); long n = Integer.par.. 2022. 2. 21.
11000번: 강의실 배정 풀이 자바의 PriorityQueue와 파이썬의 heapq, 우선순위 큐를 사용합니다. 오름차 정렬이후에 종료 시간을 시작 시간과 비교합니다. 시작 시간이 종료 시간 이상이라면 아래조건을 만족합니다. (즉, Ti ≤ Sj 일 경우 i 수업과 j 수업은 같이 들을 수 있다.) 1. 정렬된 배열에 첫 번째 종료 시간 값을 큐에 추가 합니다. 2. 배열을 두 번째 값부터 순회하면서 queue의 루트 노드 값이 시작 시간 값을 초과한다면 queue에 현재 종료 시간 값을 추가 합니다. 3. 아니라면 queue에서 루트 노드 값을 빼고 현재 종료 시간 값을 추가 합니다. 4. 마지막으로 queue의 길이를 출력합니다. 자바 import java.io.BufferedReader; import java.io.IOEx.. 2022. 2. 20.
2920번: 음계 풀이 +1씩 올라가는 오름차 정렬일때 ascending을 출력. -1씩 내려가는 내림차 정렬일때 descending을 출력. 그 이외에는 mixed을 출력. 자바 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new S.. 2022. 2. 17.
1439번: 뒤집기 풀이 0번째 인덱스의 값을 비교하고 카운트, 이후 값이 서로 다를때마다 카운트, zero, one중에 최소값을 출력한다. 자바 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String n = br.readLine(); String[] s = n.split(""); int zero = 0, one = 0; if(s[.. 2022. 2. 16.
1026번: 보물 풀이 a는 오름차 순으로, b는 내림차순으로 정렬한뒤 a * b를 한값을 더하면된다. 자바 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); .. 2022. 2. 16.