CodingTest 123

[그래프 알고리즘] 그래프(Graph) 개념과 표현 (1)

그래프(Graph) 💡그래프(Graph) 란?그래프(G)는 V와 E 두개의 집합에 의해 구성된다.보통 그래프라고 칭하면, 방향이 없는 그래프를 의미하는 경우가 많다.방향이 없다는 것은 순서쌍 (1, 2)와 (2, 1)을 동일한 쌍으로 본다는 것을 의미한다. = Edge의 방향이 없다.이진관계 (binary relation)두 개의 객체(정점) 사이의 관계를 순서쌍(ordered pair)으로 표현하는 수학적 개념그래프가 정점들 사이의 쌍으로 이루어진 관계를 나타낸다.이 강의에서 정점의 개수는 n으로, 에지의 개수는 m으로 표현한다.💡방향 그래프(Directed Graph) 란?에지 (u, v)와 (v, u)는 서로 다른 것이 방향 그래프이다.💡가중치 그래프(Weighted Graph) 란?가중치 그..

[프로그래머스 / Java] Lv.2 주식가격

Question https://school.programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm 💡 Stack 활용한 풀이 방법배열의 0번째 인덱스부터 순회하며 가격이 떨어지는 지점을 확인한다.각 시점의 가격을 확인하면서, 이전에 저장된 시점들(아직 가격이 떨어지지 않은 시점)과 비교한다.스택에는 아직 가격이 떨어지지 않은 시점의 인덱스를 저장한다.예를 들어 prices = [1, 2, 3, 2, 3]라면, 처음에는 0초(가격 1)를 스택에 push한다스택에는 실제 가격이 아니라 인덱스(index) 가 저장된다.새..

[BAEKJOON / Java] 10828. 스택

Question https://www.acmicpc.net/problem/10828Algorithm스택 구현Deque (구체적으로 ArrayDeque)를 이용해 스택 기능을 구현push(), pop(), peek() 메서드를 통해 LIFO(Last-In-First-Out, 후입선출) 구조를 유지명령 처리 로직push X → 정수 X를 스택 맨 위에 추가 (stack.push(X))pop → 스택이 비어 있으면 -1, 아니면 맨 위 값을 꺼내서 출력 (stack.pop())size → 현재 스택에 있는 요소 개수를 출력 (stack.size())empty → 스택이 비어 있으면 1, 아니면 0 출력 (stack.isEmpty())top → 스택이 비어 있으면 -1, 아니면 맨 위 값을 출력 (stack.p..

[프로그래머스 / Java, Python] Lv.0 캐릭터의 좌표

Question https://school.programmers.co.kr/learn/courses/30/lessons/120861?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm보드의 크기(board[0], board[1])로부터 이동 가능한 최대 / 최소 좌표 계산x좌표 최대 크기 : xMax = (board[0] - 1) / 2x좌표 최소 크기 : xMin = -xMaxy좌표 최대 크기 : yMax = (board[1] - 1) / 2y좌표 최소 크기 : yMin = -yMax입력 명령 처리 (Key Input 탐색)향상된 for문을 사용해 문자열 배열 keyinpu..

[프로그래머스 / Java] Lv.2 [3차] 압축

Question https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm사전 초기화문자열을 숫자로 매핑하기 위해 HashMap 사용"A" = 1, "B" = 2, … "Z" = 26까지 등록다음 등록 인덱스는 27부터 시작입력 문자열 처리현재 위치에서 시작해 사전에 존재하는 가장 긴 문자열(word)을 찾는다word를 찾을 때까지 한 글자씩 확장하며 map.containsKey()로 검사출력 & 사전 확장찾은 word의 인덱스를 결과에 추가word 뒤에 오는 다음 글자가 있다면 → word +..

[프로그래머스 / Java] Lv.2 숫자 변환하기

Question https://school.programmers.co.kr/learn/courses/30/lessons/154538 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithmdp 배열 정의dp[i] = x에서 i로 변환하는 최소 연산 횟수초기 상태 설정dp[x] = 0 (시작 숫자라서 연산 횟수 0)나머지는 아직 도달하지 않았으므로 0으로 초기화x부터 y까지 순차적으로 탐색현재 위치 i가 시작점이 아니고 dp[i] == 0이면 → 도달 불가능하므로 -1 표시 후 건너뜀그렇지 않다면(즉, 도달 가능한 숫자라면) 다음 연산을 적용해본다.세 가지 연산 적용i * 2 (y 이하일 때만)i * 3 (..

[BAEKJOON / Java] 2292. 벌집

Question https://www.acmicpc.net/problem/2292Algorithm1번에서 1번 이동하는 경우 (2번째 겹) 범위2 에서 1 + ( 6 * 1 ) = 7 사이1번에서 2번 이동하는 경우 (3번째 겹) 범위2번째 겹 + 1 에서 1 + ( 6 * 1 ) + ( 6 * 2 ) = 19 사이1번에서 N번 이동하는 경우 (N번째 겹)N - 1번째 겹 + 1 에서 1 + 6 * (1 + 2 + 3 + ... + (n-1)) 사이while문 사용start = 1, cnt = 0에서 시작매 반복마다 start += 6 × cnt로 다음 겹의 마지막 번호를 갱신갱신 직후 start >= n이면 현재 겹에 포함되므로 종료, 아니면 cnt++ 후 반복Codeimport java.io.Buff..

[BAEKJOON / Java] 11650. 좌표 정렬하기

Question https://www.acmicpc.net/problem/11650Algorithm입력 처리N을 입력받아 좌표 개수를 정한다.크기가 N × 2인 int[][] arr 배열을 만들어 각 좌표 (x, y)를 저장한다.좌표 입력 저장반복문(for)을 돌면서 N개의 줄을 입력받는다.각 줄을 StringTokenizer로 분리해서 arr[i][0] -> x 좌표, arr[i][0] -> x 좌표 로 저장한다.정렬 수행 (Arrays.sort + Comparator)Arrays.sort를 이용하여 arr 배열을 정렬한다.두 좌표의 x 값이 다르면 x 오름차순 정렬두 좌표의 x 값이 다르면 x 오름차순 정렬Codepublic class Main { public static void mai..

[프로그래머스 / Java] Lv.1 숫자 짝꿍

Question https://school.programmers.co.kr/learn/courses/30/lessons/131128 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm숫자 등장 횟수 기록0~9까지 카운트를 저장할 배열 cntX, cntY를 만든다.문자열 X, Y를 각각 한 글자씩 순회하면서,String.valueOf(c)로 문자를 문자열로 바꾸고Integer.parseInt()로 정수(0~9)로 변환한다.변환된 숫자 위치의 카운트를 1씩 증가시킨다.공통 숫자 뽑기가장 큰 수를 만들어야 하므로 숫자 9부터 0까지 내려가며 확인한다.cntX[d]와 cntY[d]의 최소값만큼 그 숫자 d를..

[프로그래머스 / Java] Lv.1 로또의 최고 순위와 최저 순위

Question https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krAlgorithm순서와 상관없이 주어진 win_nums와 일치하는 번호를 구하면 된다.lottos 배열을 확인하면서 0의 개수를 세어 zero에 저장한다.당첨 번호(win_nums)와 일치하는 번호의 개수를 세어 count에 저장한다.최고 순위는 count + zero를 맞췄다고 가정했을 때의 등수이다.최저 순위는 count만 맞췄다고 가정했을 때의 등수이다.맞춘 개수에 따라 등수를 반환하는 rank() 메서드를 만든다.answer[0]에..