본문 바로가기

Algorithm

(172)
[2018 KAKAO BLIND RECRUITMENT][구현/문자열 처리] 방금그곡 - Java 문제 바로가기 코딩테스트 연습 - [3차] 방금그곡 방금그곡 라디오를 자주 듣는 네오는 라디오에서 방금 나왔던 음악이 무슨 음악인지 궁금해질 때가 많다. 그럴 때 네오는 다음 포털의 '방금그곡' 서비스를 이용하곤 한다. 방금그곡에서는 TV, programmers.co.kr 이제 2018 카카오 3차 문제입니다. 특별한 알고리즘은 필요없고 문자열 처리랑 아주 쬐끄만 아이디어를 갖고 쉽게 풀 수 있는 문제랍니다. import java.util.*; class Solution { static class Music implements Comparable { int no, time; // 제목, 악보, time동안 진행되는 악보 String title, score, scoreLine; public int comp..
[2018 KAKAO BLIND RECRUITMENT][문자열 처리] 다트 게임 - Java 문제 바로가기 코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 문자열을 다루는 문제입니다. 정규 표현식을 연습 많이 해보아야겠습니다 ㅜㅜ class Solution { static class Result{ int score, total; String bonus; } public int solution(String dartResult) { int answer = 0; Result[] results = new Result[3]; for(int i = 0; i < 3; i++) results[i] = new Result(); getTurn(dartResult, results); for(int i = 0; i < results.length; i++) { Result result = res..
[2018 KAKAO BLIND RECRUITMENT][비트마스킹] 비밀지도 - Java 문제 바로가기 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 비트마스킹을 이용하면 아주 간단히 풀 수 있는 문제랍니다. 비트마스킹 연습합시다!! class Solution { public String[] solution(int n, int[] arr1, int[] arr2) { String[] answer = new String[n]; for(int i = 0; i < n; i++) { answer[i] = String.format("%" + n + "s", toBinary(arr1[i] | arr2..
[2018 KAKAO BLIND RECRUITMENT][구현] 캐시 - Java 문제 바로가기 코딩테스트 연습 - [1차] 캐시 3 [Jeju, Pangyo, Seoul, NewYork, LA, Jeju, Pangyo, Seoul, NewYork, LA] 50 3 [Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul, Jeju, Pangyo, Seoul] 21 2 [Jeju, Pangyo, Seoul, NewYork, LA, SanFrancisco, Seoul, Rome, Paris, Jeju, NewYork, Rome] 60 5 [Jeju, Pangyo, S programmers.co.kr 캐시란 문제 이름만 보고 쫄았는데 별거 없었습니다. 캐시나 페이지 교체 알고리즘 중 LRU 알고리즘에 대한 이해만 있으면 매우 쉽게 풀 수 있는 문제입니다. import j..
[2018 KAKAO BLIND RECRUITMENT][구현] 프렌즈4블록 - Java 문제 바로가기 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 프렌즈4블록. 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 앞에 문제 풀다가 이 문제를 보니 선녀가 따로 없습니다. 마찬가지로 특별한 알고리즘없이 하라는 대로 하면 됩니다. import java.util.*; class Solution { char[][] map; int answer = 0; public int solution(int m, int n, String[] board) { // char[][] 배열로 다룸 map = new char[m][n]; for(int i = 0; i ..
[2018 KAKAO BLIND RECRUITMENT][구현] 셔틀버스 - Java 문제 바로가기 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 마찬가지로 2018 카카오 블라인드 문제입니다. 문제 이해하는데 꽤 걸려씀니다 ^^;;;;;;;;;;;;; 특정한 알고리즘을 요하진 않고.. 문제에 주어진대로 구현을 잘 하면 됩니다. import java.util.*; class Solution { static class Time implements Comparable { int hours, minute; // timetable 파싱 Time(St..
[다이나믹 프로그래밍] Chained Matrix Multiplication 다음과 같은 행렬들을 곱한다고 해보자. 괄호를 어떻게 치든지 결과값은 모두 같을 것이다. 하지만 괄호에 따라서 곱셈 연산의 수는 모두 상이하다. 요런 식으로. 위의 그림에 보이듯이 곱셈 연산의 수가 엄청나게 차이가 난다. 그럼 더 적은 곱셈 연산으로 행렬을 곱하기 위해선 어떻게 해야 할까? 이에 대한 문제가 바로 연쇄 행렬 곱셈 (Chained Matrix Multiplication) 문제이다. 이 연쇄 행렬 곱셈 문제는 다이나믹 프로그래밍을 통해 구할 수 있다. optimal 한 부분 수열을 이용하는 것이다. 전체 행렬에 있어서, 두 개의 부분 수열로 분리한다. 각 부분 수열에 있어서, 최소 비용을 구한 후 합쳐준다 이 과정을 분리할 수 있을 때까지 부분 수열의 길이를 늘려주면서 반복한다. 사용되는 변..
[BOJ-11049][DP] 행렬 곱셈 순서 - Java 문제 바로가기 11049번: 행렬 곱셈 순서 첫째 줄에 입력으로 주어진 행렬을 곱하는데 필요한 곱셈 연산의 최솟값을 출력한다. 정답은 231-1 보다 작거나 같은 자연수이다. 또한, 최악의 순서로 연산해도 연산 횟수가 231-1보다 작거나 같 www.acmicpc.net Chained Matrix Multiplication 문제입니다. M[1, N]을 구해주면 되겠지용! import java.io.*; import java.util.*; public class Main { static int N; static int[] d;// 행열의 행, 열의 개수 (1번 행렬의 행의 수: d[0], 열의 수: d[1]) public static void main(String[] args) throws Exceptio..