Home

[Think] 끄적 ( Untack, Blockchain )

잠이오지 않는다.. 그래서 잠깐 끄적이고자 한다 ㅎㅎ 주제는 언택트와 블록체인이다. … 끄적 2020년, 코로나19로 인해 언택트의 중요성은 나날이 증가하고 있다. 금방 종식할 것만 같았던 역병이 11개월이 지난 지금도 매우 심각한 수준이다. 다 같이 노력해야 할 시점이지만, 티비를 보면 모두가 한마음은 아닌 것 같다. 언제쯤 코로나로부터 자유로워질지.. 나 또한 외출이 줄어듦에 집에서 생활하는 시간이 부쩍 늘었다. 코로나로 재택근무를 시작하면서, 일과 개발을 겸임할 수 있는 맥북, 아이패드 등 전자기기가 늘어났고, 드럼학원을 그만두고 전자드럼을...

Read more

[프로그래머스] Level3 - 보행자 천국

> 문제 문제 : [보행자 천국] > 문제풀이 자동차가 오른쪽 또는 아래로만 이동이 가능하기 때문에, 해당 위치에서 위,왼쪽 위치의 경로값을 더해가는 방식으로 구현하였다. 해당 노드에서 위 또는 왼쪽에 2가 있다면 그 방향으로 쭉쭉 타고가서 0인 값을 더하였다. 소스는 다음과 같다. class Solution { static int MOD = 20170805; static boolean check(int x, int y, int[][] map){ if(x>=0 && y>=0 && x<map.l...

Read more

[프로그래머스] Level3 - 리틀 프렌즈 사천성

> 문제 문제 : [리틀 프렌즈 사천성] 문제풀이 Map을 활용하였는데, board의 문자를 Map의 key값으로 세팅하고, board의 문자가 작은 값부터 수행해주기 위해, TrieMap을 활용하였다. 작은 문자부터 조건에 맞는다면 차례대로 문자를 삭제해주었다. 한 쌍의 타일을 A와 B라고 정의할 때, 총 네가지 케이스를 가질 수 있다. AB가 수평일때, 수직일때, A가 B보다 왼쪽 위에 있을때, A가 B보다 오른쪽 위에 있을때의 경우를 그림으로 그려서 풀이하였다. 소스는 다음과 같다. package level3; import java.util.*; clas...

Read more

[프로그래머스] Level4 - 도둑질

> 문제 문제 : [도둑질] 문제풀이 DP를 활용하여 인접한 집은 계산할 수 없기 때문에, dp[index - 2] + money[index] 와 dp[index–1]을 비교하여 최댓값을 계속 갱신해 주었다. 문제는 파라미터로 주어지는 집의 배열이 원형의 조건을 가지고 있기 때문에, 첫번째 집이 포함된다면, 마지막 집은 포함되면 안된다. 반대로 첫번째 집이 포함되지 않는다면, 마지막 집은 포함될 수 있다. 소스는 다음과 같다. class Solution { public int solution(int[] money) { int[] dp = new in...

Read more

[프로그래머스] Level3 - 가장 긴 팰린드롬

> 문제 문제 : [가장 긴 팰린드롬] > 문제풀이 팰린드롬은 거꾸로 읽어도 같은 문자를 말한다. 주어진 문자열에서 가장 긴 팰린드롬을 찾는 문제이다. 따라서, 가장 긴 문자열부터 팰린드롬 체크를 해서, 맞다면 그 문자열의 길이를 리턴해주었다. 소스는 다음과 같다. class Solution{ public int solution(String s){ int len = s.length(); for(int l = len; l > 1; l--){ for(int i=0; i+l <= len; i++){...

Read more

[프로그래머스] Level2 - 스킬트리

> 문제 문제 : [스킬트리] > 문제풀이 level4 문제풀다가 머리가 아파서 잠시 쉬는 타임으로다가.. 선행스킬순서 skill과 유저가 만든 스킬트리 배열을 배개변수로 주어질 때, 선행스킬순서에 맞는 스킬트리 개수를 찾는 문제인데, 해싱으로 빠르게 탐색할수 있도록 구현하였다. 소스는 다음과 같다. import java.util.*; class Solution { public int solution(String skill, String[] skill_trees){ Map<Character, Integer> map = new Hash...

Read more

[프로그래머스] Level4 - 징검다리

> 문제 문제 : [징검다리] > 문제풀이 바위를 n개 만큼 제거한 후 바위 사이의 거리가 최솟값 중에 최댓값을 구하는 문제이다. 말이 좀 어려운데.. 반대로 생각하여, 바위 사이의 거리를 가중치로, 바위를 최대한(n보다 같거나 작을 때) 제거할 수 있는 값 중 최솟값을 구하였다. 소스는 다음과 같다. package level4; import java.util.*; public class Solution_징검다리 { public static void main(String[] args) { System.out.println(solution(25, new ...

Read more

[프로그래머스] Level3 - 풍선 터트리기

> 문제 문제 : [풍선 터트리기] > 문제풀이 접근방법이 중요한 문제인 것 같다. 첫번째 접근은 BruteForce로 i번째 자리는 작은수를 터치고, 나머지 큰수를 터쳐서 남는 숫자를 추가해가는 아이디어… 당연히 최소 O(n^2).. Pass.. 두번째 접근은 혹시나 풍선의 위치에 상관없이 dp문제일까 싶었지만 아니었다.. Pass.. 세번째 접근, 결론은 풍선이 마지막에 하나만 남는 경우를 생각했을 때, 양 사이드 풍선은 어떤 경우에라도 남아있을 수 있다. 이유 ? 왼쪽을 기준으로 최대치 100만개 풍선이 있다고 했을 때, 맨 왼쪽 값을 제외하고 나머지 99만...

Read more