문제 : https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배 programmers.co.kr 풀이과정 먼저, 두 정수의 최소공배수를 계산하는 수식을 살펴보면 다음과 같다. 이 식을 통해 두 정수의 GCD를 알면 LCM을 계산할 수 있음을 확인 할 수 있다. 이 때, GCD를 계산하는 방법으로 유클리드 호제법(https://en.wikipedia.org/wiki/Euclidean_algorithm)을 활..
문제 : 링크 풀이과정 1. Map 이용하기 유저의 ID는 시종일관 동일하나 닉네임은 여러 번 변경될 수 있다. 하지만 출력에 필요한 결과는 마지막 닉네임이므로 이 값만 알면 된다. 그러므로 유저가 입장하거나 닉네임 변경을 할 때 마다 ID와 Nickname을 매핑시키고 이를 최종 결과를 구하는데에 사용한다. 2. Queue 이용하기 누가, 어떤 행동을 했는지에 관한 로그는 모두 순차적으로 write, read 된다. 따라서 진행 순서를 지키기에 Queue 를 사용함이 적합하다. 이 때, 처음에는 Queue 가 아니라 List 인터페이스와 LinkedList 구현체를 사용했는데 시간초과가 발생했다. 여기서 인터페이스만 Queue로 바꾸어 주어도 이 문제는 통과할 수 있다. 이를 보면 사용하려는 메서드에 ..
배달 풀이과정 참고 - 다익스트라 알고리즘 각각의 마을에서 다른 마을로의 이동시간을 나타내는 grid를 만든다. 이 때 중간에 다른 마을을 거치는 경우는 고려하지 않는다. 문제에서 주어진 예제 1번의 경우에는 아래의 그림과 같이 표현된다. 문제 조건에 의해 배달을 출발하는 마을은 1번 마을로 고정되어 있으므로 1번 마을에서 출발하여 1번 마을로 도착하는 경우 걸리는 시간을 0으로 설정한다. 1번 마을을 이미 방문했음을 표시한다. 아직 방문하지 않은 마을들 중 현재 마을(최초 시작시에는 1번 마을)에서 최단 시간에 이동할 수 있는 마을로 이동한다. 위의 예시에서는 2번과 4번 마을로 이동이 가능하지만 2번 마을이 소요시간 1로 가장 작으므로 2번 마을로 이동하게 된다. 이동한 마을을 방문했음을 표시한다. ..
문제: 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인 타일을 놓는 방법의 수를 몇가지 더 찾아보면 다음과 같다. 이 그림..
문제 풀이과정 팰린드롬은 크게 두 가지 종류로 구분할 수 있다. 글자 하나를 중심으로 서로 대칭을 이루는 팰린드롬 (팰린드롬의 길이가 홀수) a, aba, aaa, abbb 등 글자 두 개를 중심으로 서로 대칭을 이루는 팰린드롬 (팰린드롬의 길이가 짝수) aa, abba, aaaa, abcc 등 풀이의 진행과정은 다음과 같다. 특정 index i 번 째 문자 하나를 중심으로 팰린드롬을 이룬다고 가정하고 최대 팰린드롬의 길이를 구한다. 특정 index i 및 i + 1 번 째 문자 두 개를 중심으로 팰린드롬을 이룬다고 가정하고 최대 팰린드롬의 길이를 구한다. (해당 문자 두 개가 서로 다를 경우 최대 팰린드롬의 길이는 1이다.) 1과 2에서 구한 값들 및 기존에 구한 최대 팰린드롬의 길이 중 가장 긴 값을..
- Total
- Today
- Yesterday
- dynamic programming
- 알고리즘
- 자료구조
- 해시
- 탐욕법
- 데브코스
- greedy
- 그래프
- 큐
- stack
- 정렬
- dfs
- Algorithm
- Heap
- 멀리 뛰기
- DP
- Sorting
- 백준
- 자바
- 프로그래머스
- BFS
- Hash
- 코딩테스트
- 힙
- 완전탐색
- 동적계획법
- programmers
- Queue
- 연습문제
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |