// 알고리즘 1. 조합 2. 받은 문자열을 정렬 3. 조합 4. 완성된 문자열중 주어진 조건과 일치한다면 StringBuilder에 저장 5. 출력. 더보기 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class 암호만들기_1759 { static int L, C; static char arr[], ans[]; static StringBuilder sb; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in))..
// 알고리즘 1. 시뮬레이션 2. 컨베이어 벨트 위 / 아래 각각 한개씩 배열을 생성 3. 컨베이어벨트 이동함수 ( moveC ) 작성 4. 로봇 이동함수 (moveR) 작성 -> 로봇은 방문배열v 하나만 구현하면 됨. (위 배열만 필요 함.) 5. 계산 -> 횟수 1 증가 -> moveC -> moveR -> 올라가는 곳 (uArr[0] ) 확인 해서 로봇올리기 -> 위 / 아래 배열에서 내구도가 0인 개수 확인 더보기 import java.util.*; import java.io.*; public class 컨베이어벨트_20055 { static int N, K, uArr[], dArr[], ans; static boolean[] v; public static void main(String[] ar..
// 알고리즘 1. 위상정렬 2. 진입차수를 저장하는 배열 v에 진입차수를 담음. 3. 진입차수가 0인 노드먼저 큐에 넣음. 4. 큐를 하나씩 poll하고 해당 노드와 연결되어있는 노드의 진입차수를 1씩 감소함 -> 만약 1감소한 노드의 진입차수가 0이 되었을 경우 큐에 집어넣음. 더보기 import java.util.*; import java.io.*; public class 줄세우기_2252 { static int N, M, v[]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st ..
// 알고리즘 1. 자료구조활용 문제 2. 우선순위큐 사용 - 중간값을 구하기 위해 min우선순위큐와 max우선순위큐 2개 사용 - 우선순위큐의 크기가 같으면 두개의 peek값을 비교하여 값 선정 - min의 peek 값과 max의 peek값을 비교하여 min 값이 더 작으면 자리교체 3. StringBuilder에 max.peek 값 저장 더보기 import java.util.*; import java.io.*; public class 가운데를말해요_1655 { static int N; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(Sys..
1. DP (부분합) 2. for문을 돌면서 하나씩 더해감 -> 더해온 값이 S보다 클경우 S보다 작아질 때 까지 0번 인덱스부터 증가해가면서 빼기. 3. 더 하고 뺄 때 cnt를 증가하고 감소시켜 최소값을 구함. 더보기 package baekjoon; import java.util.*; import java.io.*; public class 부분합_1806 { static int N, S, arr[]; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringToken..
// 알고리즘 1. 깊이 우선 탐색 + 시뮬레이션 2. 우선순위 큐 사용 -> 최단거리에 있는 손님중 행 / 열 순으로 먼저 선택하기 때문 3. 도착하는 지점의 r, c 좌표를 ArrayList로 저장. 4. 최단경로 손님 찾기 -> 손님 태우고 도착지로 출발 반복 더보기 import java.util.*; import java.io.*; public class 스타트택시_19238 { static int N, M, G, map[][], taxiR, taxiC, ans, result; static PriorityQueue q; static int[] dr = { -1, 0, 0, 1 }; // 상 왼 오 하 static int[] dc = { 0, -1, 1, 0 }; static ArrayList li..
// 알고리즘 1. 시뮬레이션 2. 주사위 정보를 담을 배열 구현 -> 1차원 크기가 6인 배열 구현 3. 주사위 이동 -> 지면에 닿는 위치는 항상 dice[0] 번을 기준으로 함 -> 주사위를 이동시킬 때 마다 주사위 배열의 위치가 변해야 함. -> up, down, left, right함수(위치 변환 메서드)를 구현해 각각 주사위 위치를 방향에 따라 변경함 4. 1번 이동할 때마다 출력 -> 한번 이동할 때의 방향값에 따라 위치변환 메서드를 실행하고 dice[0]번과 짝인 dice[5]를 출력 함 더보기 import java.util.*; import java.io.*; public class 주사위굴리기_14499 { static int N, M, x, y, K, map[][], arr[], di..
// 알고리즘 1. 규칙찾기? -> 1부터 하나씩 규칙을 찾았는데 2로 나누었을 때 나머지가 1이 나오면 상근이가 이기는 게임이였음... import java.util.Scanner; public class 돌게임_9655 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n =sc.nextInt(); System.out.println(n%2 == 1 ? "SK":"CY"); } } ※ 오늘은 프로젝트 때문에 쉬운문제 하나만 풀고 넘어가자 ㅠ
// 알고리즘 1. 시뮬? + 완탐 2. 최대 5번 이동이 가능하기 때문에 0~4까지 갈 수 있는 모든 이동방향을 구함 -> 재귀로 해결 3. 각 이동방향마다 시뮬레이션 -> 위 방향일 때 하나만 구현하면 아래 왼쪽 오른쪽은 비슷한 코드가 됨. -> 계산된 값은 또 더해지면 안됨 ex) 2 2 2 2 -> 4 4 0 0 (왼쪽) -> 위 경우를 해결하기 위해 방문배열 사용(v[N][N]) 더보기 import java.io.*; import java.util.*; public class Easy2048_12100 { static int N, map[][], dir[], ans; static int[] dr = { 1, -1, 0, 0 }; // 하 상 우 좌 static int[] dc = { 0, 0, ..
// 알고리즘 1. 부분집합 2. check배열을 나올 수 있는 최대 수인 2000000 생성 3. 주어진 수의 부분집합을 구해 모두 더해서 check 배열에 표시 4. check배열을 1부터 시작하여 false인 값이 정답 더보기 import java.io.*; import java.util.*; public class 부분수열의합_14225 { static int N, arr[], ans; static boolean[] v; static boolean[] check; public static void main(String[] args) { Scanner sc = new Scanner(System.in); N = sc.nextInt(); v = new boolean[N]; check = new bool..
