본문 바로가기

분류 전체보기137

[프로그래머스 - Java] [3차] 압축 (2018 KAKAO BLIND RECRUITMENT) 문제 programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 설명 LZW 압축은 다음 과정을 거친다. 길이가 1인 모든 단어를 포함하도록 사전을 초기화한다. 사전에서 현재 입력과 일치하는 가장 긴 문자열 w를 찾는다. w에 해당하는 사전의 색인 번호를 출력하고, 입력에서 w를 제거한다. 입력에서 처리되지 않은 다음 글자가 남아있다면(c), w+c에 해당하는 단어를 사전에 등록한다. 단계 2로 돌아간다. 1. 길이가 1인 모든 단어를 포함하도록 사전을 초.. 2020. 9. 12.
[프로그래머스 - Java] 점프와 순간 이동 문제 programmers.co.kr/learn/courses/30/lessons/12980?language=java 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈� programmers.co.kr 설명 건전지 사용량의 최솟값을 구하기 위해서는 건전지 소모가 되지 않는 순간이동을 많이 쓰고 점프를 최소화해야 한다! 예를 들어 n이 6일 때 6까지 최대한 순간이동을 해보자! 그러기 위해 6에서부터 0까지 Top-Down 방식으로 생각해보자 (0부터 6까지 Down-Top으로 생각한다면 머리 아프다... 복잡함. 6을 .. 2020. 9. 10.
[백준 - Java] 16236번 : 아기 상어 문제 더보기 www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가 www.acmicpc.net N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1 ×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수.. 2020. 6. 16.
[SWEA - Java] 2814 : 최장 경로 문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GOPPaAeMDFAXB SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 전체 코드 dfs를 하되, 각 정점마다 dfs를 모두 해보면서 최장 경로를 따져봐야 한다. 그렇기에 dfs후에 정점 인덱스에 해당하는 visited 값을 false로 만들어주어야 한다. (아예 dfs를 시작할 for문 안에서 visited를 초기화해주어도 된다.) 그리고 갔다 온 정점은 visited의 값이 true인데 이것 역시 재귀가 종료될 때 false로 만들어주어야지 최장 경로 구할 수.. 2020. 6. 6.
[백준 - Java] 12100번 : 2048(Easy) 문제 www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net 생각할 것 최대 5번 상하좌우 어디든 그 결과 가장 큰 블록의 값 방향에 따른 이동으로 블록들이 한 방향으로 빈 블록 없이, '0' 없이 붙는다. 이때 같은 수의 블록이 만나면 합쳐진다. x 2 두배. 한 번의 이동에서 이미 합쳐진 블록은 또 합쳐질 수 없다. 똑같은 수가 세 개가 있는 경우에는 이동하려고 하는 쪽의 칸이 먼저 합쳐진다 생각할 것! 배열 복사 - 그냥 하면 안 .. 2020. 6. 5.
[백준 - Java] 13023번 : ABCDE 문제 더보기 www.acmicpc.net/problem/13023 BOJ 알고리즘 캠프에는 총 N명이 참가하고 있다. 사람들은 0번부터 N-1번으로 번호가 매겨져 있고, 일부 사람들은 친구이다. 오늘은 다음과 같은 친구 관계를 가진 사람 A, B, C, D, E가 존재하는지 구해보려고 한다. A는 B와 친구다. B는 C와 친구다. C는 D와 친구다. D는 E와 친구다. 위와 같은 친구 관계가 존재하는지 안 하는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 사람의 수 N (5 ≤ N ≤ 2000)과 친구 관계의 수 M (1 ≤ M ≤ 2000)이 주어진다. 둘째 줄부터 M개의 줄에는 정수 a와 b가 주어지며, a와 b가 친구라는 뜻이다. (0 ≤ a, b ≤ N-1, a ≠ b) 같은 친구 관계가 두 .. 2020. 5. 29.
[백준 - Java] 17265번 : 나의 인생에는 수학과 함께 문제 더보기 www.acmicpc.net/problem/17265 세현이의 인생의 목표는 1분 1초 모든 순간 수학과 함께 살아가는 것이다. 그렇기 때문에 매일 수학을 생각하면서 살아가고 있다. 세현이는 밥을 먹을 때도 쌀알의 수를 계산하여 칼로리를 바로 계산하고 한걸음 한걸음 보폭을 계산하여 자신의 활동량을 확인하며 인생의 목표를 실행하며 살아가고 있다. 그런 세현이는 매일 학교를 가면서 지나가는 길에도 수학을 적용시키고 싶었다. 세현이네 집에서 학교까지 가는 길은 N x N 크기의 바둑판과 같다. 그리고 각 블록은 1x1 정사각형으로 구분 지을 수 있다. 세현이는 그 블록마다 숫자와 연산자가 존재한다고 생각해서 임의의 숫자와 연산자를 각 블록에 넣어 바둑판을 만들었다. 세현이는 학교에서 집으로 가는 .. 2020. 5. 27.
[백준 - Java] 10972번 : 다음 순열 / 10973 : 이전 순열 문제 더보기 www.acmicpc.net/problem/10972 1부터 N까지의 수로 이루어진 순열이 있다. 이때, 사전순으로 다음에 오는 순열을 구하는 프로그램을 작성하시오. 사전 순으로 가장 앞서는 순열은 오름차순으로 이루어진 순열이고, 가장 마지막에 오는 순열은 내림차순으로 이루어진 순열이다. N = 3인 경우에 사전순으로 순열을 나열하면 다음과 같다. 1, 2, 3 1, 3, 2 2, 1, 3 2, 3, 1 3, 1, 2 3, 2, 1 입력 첫째 줄에 N(1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄에 순열이 주어진다. 출력 첫째 줄에 입력으로 주어진 순열의 다음에 오는 순열을 출력한다. 만약, 사전순으로 마지막에 오는 순열인 경우에는 -1을 출력한다. 단순히 생각한 나의 사고 과정과 코딩 .. 2020. 5. 27.
[Java] Collection Framework 3 - Map(HashMap / LinkedHashMap / TreeMap / HashTable/ Properties) Map 컬렉션 키(key)와 값(value)으로 구성된 Entry 객체를 저장하는 구조 키와 값은 모두 객체 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치된다. Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, Properties, TreeMap 등이 있다. Map 인터페이스 메소드 메소드의 매개 변수 타입과 리턴 타입에 K, V 타입 파라미터가 지정되어 있다. 왜냐하면 Map 인터페이스가 제네릭 타입이기 때문에 구체적인 타입은 구현 객체를 생성할 때 결정된다. 따라서 K, V로 주어진 것. 기능 메소드 설명 객체 추가 V put(K key, V value) 주어진 객체를.. 2020. 5. 20.
[프로그래머스 - Java] 단어 변환 (DFS/BFS Level 3) 링크 programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 설명 애초에 words에 target이 없다면 변환할 수가 없다. 그런 경우는 0을 반환하고 그 외의 경우에서 최단 과정을 찾는다. BFS를 통해 최단 과정을 찾는다. BFS를 위해 한 글자 차이나는 단어들을 인접해 있다고 생각하고 인접 리스트를 만든다. 예를들어 아래와 같은 값이 주어진다면 begin = "hit" words .. 2020. 5. 19.
반응형