문제 : 링크 풀이과정 1. Map 이용하기 유저의 ID는 시종일관 동일하나 닉네임은 여러 번 변경될 수 있다. 하지만 출력에 필요한 결과는 마지막 닉네임이므로 이 값만 알면 된다. 그러므로 유저가 입장하거나 닉네임 변경을 할 때 마다 ID와 Nickname을 매핑시키고 이를 최종 결과를 구하는데에 사용한다. 2. Queue 이용하기 누가, 어떤 행동을 했는지에 관한 로그는 모두 순차적으로 write, read 된다. 따라서 진행 순서를 지키기에 Queue 를 사용함이 적합하다. 이 때, 처음에는 Queue 가 아니라 List 인터페이스와 LinkedList 구현체를 사용했는데 시간초과가 발생했다. 여기서 인터페이스만 Queue로 바꾸어 주어도 이 문제는 통과할 수 있다. 이를 보면 사용하려는 메서드에 ..
문제: https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 programmers.co.kr 풀이과정 124나라에서는 1, 2, 4 세 가지 숫자만을 사용하여 모든 자연수를 표현한다. 먼저 이 숫자의 규칙성을 찾기 위해 10진법 숫자와, 3진법 숫자, 그리고 124 나라의 숫자를 비교 해 보았다. 10진법 수 3진법 수 124 나라의 숫자 1 1 1 2 2 2 3 10 4 4 11 11 5 12 12 6 20 14 7 21 21 8 22 22 9 100 24 10 101 41 11 102 42 12 110 44 13 111 111 14 112 112 15 120 114 여기서 124나라의 숫자에서 4가 나타나는 경우를..
문제: https://programmers.co.kr/learn/courses/30/lessons/12980 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈 programmers.co.kr 풀이과정 N의 값에 따라 어떤 방식으로 이동하는지 살펴보면 다음과 같은 표를 얻을 수 있다. N 이동방법 (J: Jump, TP: Teleport) K 1 J(0 → 1) 1 2 J(0 → 1) → TP(1 → 2) 1 3 J(0 → 1) → TP(1 →2) → J(2 → 3) N(2) 까지 이동 후 1칸 점프 2 4 J(0 → 1..
문제: https://www.acmicpc.net/problem/11726(백준) 문제: https://programmers.co.kr/learn/courses/30/lessons/12900(프로그래머스) 11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net 프로그래머스의 [멀리 뛰기] 문제와 사실상 같은 문제이다. 멀리 뛰기 게시글에 해당 내용을 정리 해 놓았다. 소스코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scann..
문제: https://programmers.co.kr/learn/courses/30/lessons/12914 코딩테스트 연습 - 멀리 뛰기 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2 programmers.co.kr 풀이과정 문제를 서술하는 방식만 바뀌었을 뿐, 2N 타일링 문제와 완전히 동일한 문제이다. 그래서 1칸 점프와 2칸 점프를 각각 다음과 같이 치환하여 생각할 수 있다. 이제, 높이가 2이고 가로길이가 N인 공간에 크기가 1 * 2인 타일을 놓는 방법의 수를 몇가지 더 찾아보면 다음과 같다. 이 그림..
문제 - 가장 먼 노드 풀이과정 BFS 방식으로 풀이를 진행 사전준비 각 Node마다 연결되어있는 Node들을 표현하기 위한 2차원 배열을 만든다. (boolean[n][n]) 이후 주어진 edge 정보를 바탕으로 서로 연결되어 있는 Node들 끼리는 해당 위치의 원소값을 true로 변경한다. 1번 Node로부터 얼마만큼의 거리에 떨어져 있는지를 표현할 1차원 배열을 만든다. (int[n]) 여기서 원하는 결과는 가장 먼 거리에 있는 Node의 갯수이므로 정확한 최대 거리를 꼭 알아야 할 필요성은 없다. 1번 Node로 부터 떨어져 있는 거리를 모르는 Node의 경우 원소값이 0인 상태로 존재한다. 1번 Node 부터 BFS 탐색을 시작할 수 있도록 준비한다. queue에 1번 Node를 enqueue ..
등굣길 풀이과정 주어진 n과 m에 대하여 이동 가능한 길을 grid로 나타낼 수 있다. 예를 들어 n = 3, m = 4이면 아래 그림과 같다. 문제의 제한 조건으로 이동 방향은 우측 및 하단 뿐이므로, 출발지점에서 우측과 하단으로 이동 가능한 방법의 수는 아래의 그림과 같이 나타낼 수 있다. 각각 오른쪽으로만 계속 이동하거나, 하단으로만 계속 이동해야 도달할 수 있는 위치이므로 이동가능한 방법의 가짓수는 모두 1이다. 나머지 비어있는 cell 들로 이동할 수 있는 방법은, 바로 위 cell에서 아래로 이동하거나 바로 왼쪽 cell에서 우측으로 이동하는 것 뿐이므로 나머지 각각의 cell들에 대한 이동 가능한 방법의 수는 바로 위쪽 cell까지 이동 가능한 방법의 수 + 바로 왼쪽 cell까지 이동 가능..
- Total
- Today
- Yesterday
- 코딩테스트
- 자바
- 알고리즘
- Algorithm
- 탐욕법
- 동적계획법
- Queue
- Sorting
- 프로그래머스
- 해시
- Hash
- 멀리 뛰기
- programmers
- DP
- 정렬
- 데브코스
- 큐
- 백준
- java
- 그래프
- dfs
- 완전탐색
- dynamic programming
- Heap
- BFS
- greedy
- 연습문제
- stack
- 자료구조
- 힙
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |