본문 바로가기

전체 글

(233)
[2017 카카오코드 예선][BFS] 카카오프렌즈 컬러링북 - Java 문제 바로가기 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 간만에 간단한 BFS 문제입니다. 맨첨에 색깔이 같으면 같은 영역이라고 생각했는데 그것도 아니고 그냥 따로 봐주면 돼서 더 간단합니다. import java.util.*; class Solution { static class Dir { int y, x; Dir(int y, int x) { this.y = y; this.x = x; } } int[] dy = { 1, -1, 0, 0 }; int[] dx = { 0, 0, 1, -1 }; boolean..
[2019 카카오 개발자 겨울 인턴십][이분 탐색(Parametric Search)] 징검다리 건너기 - Java 문제 바로가기 코딩테스트 연습 - 징검다리 건너기 [2, 4, 5, 3, 2, 1, 4, 2, 5, 1] 3 3 programmers.co.kr 오우 만만치 않은 문제입니다. 마찬가지로 효율성을 확보해야 하는 문제입니다. import java.util.*; class Solution { public int solution(int[] stones, int k) { // Parametric Search return parametric_search(stones, k); } public int parametric_search(int[] stones, int k) { int l = Arrays.stream(stones).min().getAsInt(); int r = Arrays.stream(stones).max(..
[Trie] 전화번호 목록 - Java 문제 바로가기 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 풀고 나니 이 문제랑 거의 똑같네용 마찬가지로 Trie로 풀었습니다. import java.util.*; class Solution { static class TrieNode { Map childNodes = new HashMap(); boolean isLastChar; } static class Trie { TrieNode root = new TrieNode(); void insert(String input) { TrieNode cur = r..
[2019 카카오 개발자 겨울 인턴십][Map 활용/DFS] 호텔 방 배정 - Java 문제 바로가기 코딩테스트 연습 - 호텔 방 배정 programmers.co.kr 효율성까지 채점되는 문제입니다. 아이디어는 Map 활용! import java.util.*; class Solution { Map map = new HashMap(); public long[] solution(long k, long[] room_number) { long[] answer = new long[room_number.length]; int idx = 0; for(long rn : room_number) { answer[idx++] = findRoom(rn); } return answer; } public long findRoom(long rn) { if(map.containsKey(rn) == false) { ma..
[2019 카카오 개발자 겨울 인턴십][문자열 처리/DFS] 불량 사용자 - Java 문제 바로가기 코딩테스트 연습 - 불량 사용자 개발팀 내에서 이벤트 개발을 담당하고 있는 무지는 최근 진행된 카카오이모티콘 이벤트에 비정상적인 방법으로 당첨을 시도한 응모자들을 발견하였습니다. 이런 응모자들을 따로 모아 불량 programmers.co.kr 생각보다 좀 까다로웠던 문제입니다.. 정규 표현식을 잘 써야할텐데 ㅜ import java.util.*; import java.util.regex.*; class Solution { Set answerSet = new HashSet(); boolean[] v; public int solution(String[] user_id, String[] banned_id) { v = new boolean[user_id.length]; for(int i = 0; ..
[2019 카카오 개발자 겨울 인턴십][구현/문자열 처리] 튜플 - Java 문제 바로가기 부분집합이 주어지고 얘들을 갖고 튜플을 만드는 문제입니다. 최대 개수를 잘못 보고 엉뚱하게 풀뻔 했네욤 ^^;; import java.util.*; class Solution { public int[] solution(String s) { List sets = new ArrayList(); String[] arr = s.replaceAll("[{}]", " ").trim().split(" , "); int[] answer = new int[arr.length]; Arrays.sort(arr, (o1, o2)->{ return o1.length() - o2.length(); }); for(String str : arr) { List temp = new ArrayList(); for(Strin..
[BOJ-11003][슬라이딩 윈도우] 최솟값 찾기 - Java 문제 바로가기 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net 시간 제한이 굉장히 빽빽합니다. 슬라이딩 윈도우 개념을 적용하면 풀 수 있는데.. 시간을 줄이기 위한 최대한의 노력을 해야합니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { input(); } public static void input() throws E..
[BOJ-11659][구간 합] 구간 합 구하기 4 - Java 문제 바로가기 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000), 합을 구해야 하는 횟수 M (1 ≤ M ≤ 100,000)이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에 www.acmicpc.net 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 문제입니다. prefix sum을 입력받을 때 구해서 O(N) 타임으로 구할 수 있습니다. import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { input(); } public s..