[백준/Java] 2667 - 단지번호붙이기
·
코딩테스트/백준
https://www.acmicpc.net/problem/2667문제풀이입력한 배열을 모두 순회하면서 집이 있는지 없는지 판단해야 하기 때문에 DFS를 활용했다apart 배열과 똑같은 크기의 visited 배열을 만들고 해당 노드 방문 여부를 체크하였다총 단지 수는 몇 개가 나올 지 모르기 때문에 ArrayList로 선언하였다상하좌우를 탐색하기 위해 dx, dy 배열을 활용하여 dfs 탐색을 하였다코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.Collections;import java.util.StringTok..
[백준/Java] 1931 - 회의실 배정
·
코딩테스트/백준
https://www.acmicpc.net/problem/1931문제풀이처음엔 너무 어렵게 생각해서 이중 for문으로 각각 비교하면서 진행하는 것으로 구현했다당연히 시간 초과가 났다다시 생각해보니 for문 하나를 사용해서 이전 끝나는 시간을 변수에 저장하고다음 회의 시작 시간과 비교하면서 끝나는 시간을 갱신하면 된다 끝나는 시간을 기준으로 정렬하고 같다면 시작 시간을 기준으로 정렬하는 것이 핵심코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { static int N; static int[][] work; public static void main(Stri..
[백준/Java] 1514 - 잃어버린 괄호
·
코딩테스트/백준
https://www.acmicpc.net/problem/1541문제풀이우선 - 기호를 기준으로 String 배열을 나눠주고+ 기호와 같이 있는 숫자들을 모두 더한뒤 빼준다면 최솟값이 나올 것이다코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; StringBui..
[백준/Java] 16935 - 배열 돌리기 3
·
코딩테스트/백준
https://www.acmicpc.net/problem/16935문제풀이문제를 잘 읽고 단순히 구현만 하면 되는 문제이다배열의 인덱스를 신경써서 구현하는 것이 핵심인 것 같다기존 배열을 계속 갱신하는 방법으로 해결하였다 코드를 보면 더 잘 이해갈 것이다코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { static int N, M, R; static int[][] arr; static int[] op; static int[][] newArr; static int[][] part1; stati..
[백준/Java] 1012 - 유기농 배추
·
코딩테스트/백준
https://www.acmicpc.net/problem/1012문제풀이dfs로 해결하였다상하좌우를 결정하는 dx, dy 배열을 활용하였다visited[][] 이중 배열을 사용하여 방문한 노드를 표시하였다현재 노드에서 상하좌우로 움직이면서 배추가 있다면 dfs 호출을 하고 마리 수를 더해주었다코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { static int[][] arr; static boolean[][] visited; static int[] dx = {0, -1, 0, 1}; // 좌우 stat..
[백준/Java] 1244 - 스위치 켜고 끄기
·
코딩테스트/백준
https://www.acmicpc.net/problem/1244문제풀이나만 그런지 몰라도 글이 매우 어렵게 느껴졌다정리해보면 주어진 스위치가 있는데남학생 -> 스위치 번호가 받은 수의 배수인 것만 상태 바꿈 여학생 -> 받은 수를 중심으로 대칭 탐색 -> 대칭인 스위치 상태가 같아야 함코드를 보면 이해가 갈 것이다 배열 인덱스가 1부터 시작해서 처음엔 배열 범위 밖으로 나가서 런타임 에러가 났었다코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class Main { static int N; static in..
[백준/Java] 17626 - Four Squares
·
코딩테스트/백준
https://www.acmicpc.net/problem/17626문제풀이자연수 N이 주어질 때 N을 최소 개수의 제곱수들의 합으로 나타내는 문제이다 dp[i] 값을 찾기 위해 i에서 뺄 수 있는 모든 제곱수(j*j)를 탐색한다예를 들어 i=13 이면, 1^2, 2^2, 3^3을 차례대로 빼보는 것이다for (int j = 1; j * j 점화식을 세워보면 dp[i] = dp[i - (어떤 제곱수)] + 11을 더해주는 것은 제곱수를 뺀 경우의 수를 다시 더해주기 위함이다dp[13]을 구한다고 생각해보자j =1 : 13 - 1^2 = 12, dp[12]의 값에 1^2 항 하나를 추가한 것과 같다 => dp[12] + 1 = 4j =2 : 13 - 2^2 = 9, dp[9]의 값에 2^2 항 하나를 추가..