문제 링크Arrays 함수 사용, Stream 사용에 미숙해서 한참 걸렸던 것 같다.잘 알아 두도록 하자.Arrays를 사용한 배열의 인덱스 확인Arrays와 Stream을 사용한 배열의 중복 제거 - String 배열 예시
문제링크정규표현식을 사용해서 푸는 문제였다.정규표현식을 잘 사용하지 못해서 푸는데 고통스러웠으나, 어찌저찌 풀었다.정규표현식에 대해서 사용법에 익숙해져야하겠다.
문제를 풀어나가는 방법을 잡는데 어려움을 겪는다.좌표를 사용해서 해당 거리를 구할 수 있는 것 까지는 확인하였으나, 좌표값을 통해서 어떻게 해야할지를 꽤 오랫동안 고민했다.거리를 계산할때, 절대값을 사용해야하는 것을 알았으나, Math.abs() 함수를 '아 그거 뭐였
없는 숫자 더하기규칙만 구하면 되게 쉽게 풀 수 있는 문제였다.모든 숫자를 더한 값을 주어진 배열값으로 빼기만 하면 원하는 값이 나온다.
문제 링크통과는 하지만 성능이 좋지 못하다.int 배열은 Arrays.asList를 통해서 바꾸면 Integer로 변경이 안되어서 int\[]를 인자로 갖는 list가 된다.그렇기에, 위와 같이 Arrays.stream을 통해서 바꿔야만 했다.굳이 stream을 사용하
숫자 문자열과 영단어생각나는 대로 했으니 switch-case를 사용해서 하게 되었다. 문제를 푼 뒤에 볼 수 있는 다른 사람들 풀이는 생각하지도 못한 방법이었다.replaceAll 과 두 개의 String 배열을 통해서 for문으로 돌려서 풀다니..
k번째 수최근에 공부한 Arrays덕분에 쉽게 풀었다.copyOfRange 함수를 통해서 아주 쉽게 잘라낼 수 있었지만, 해당 함수에서 잘라내는 범위가 arrstart 부터, arrend -1 까지 라는 것을 잘 유의해야한다.2차원 배열인 commands에 대해서 길
실패율Stream은 신이고 나는 병신이다.처음에는 직접 Comparator을 구현했지만, thenComparing 이라는 편리한 함수가 있다는 것을 알고 이를 통해서 구현했다.단 한줄로 해결이 되다니...^^
모의고사머리가 나쁘면 손이 고생한다..Math.max 함수를 사용하면 훨씬 쉽게 비교할 수 있다. 어흐흑
체육복이정도면 Arrays 를 무지성으로 쓰고 있는게 아닌가 싶은데..greedy 알고리즘 문제라고 한다.. 사실 모르고 그냥 풀었다.그런데 문제 풀면서 조건을 제대로 읽는 습관을 들여야겠다. 체육복을 훔침 당한 사람이 체육복 여분이 있는 사람이 될 수 있다는 조건을
크레인 인형 뽑기처음으로 한번에 풀었다.stack 쓰면 너무 간단하게 풀리는데 이거 맞나?암튼 앞서 풀었던 문제들에서 얻은 지식이 도움이 되었다. 기분 좋네
문자열 압축첫 lv2의 문제. 풀긴 풀었다만 코드가 아주 지저분 한 것 같다.너무 라이브러리에 의존하는거 아닌가? 라는 생각이 들었다. 다음 문제는 최대한 사용하지 않고 풀어보도록 하자.다른 사람의 풀이를 보면 DP로 풀었고, 라이브러리는 사용하지 않았다. 보고 참고하
오픈 채팅방닉네임 체크용 맵과, 명령어들을 순서대로 넣어두는 commandList 만들었다.이를 통해서 마지막으로 변경되는 닉네임 정보를 수집하고, 명령어들과 uid를 따로 수집하도록 하였다.객체로 풀어볼까 했지만 하나하나 구현하는게 귀찮아서 일단 이렇게 풀었으나...
카카오 프렌즈 컬러링북재귀함수를 만들어서 풀어보았다.테스트케이스는 통과하는데, 정작 제출시에는 통과가 안되어서 찾아보니...원본 배열을 수정하면 안된다고 한다.그래서 배열을 복사해야만 했다.추가로 해당 문제를 DFS, BFS로 푸는 방법도 있는 것 같던데... 관련해서
기능 개발애초에 문제에 스택/큐라고 적혀있길래 처음에는 스택으로 접근했다.풀다보니 '이거 그냥 for문으로도 풀겠는데...' 싶어서 그냥 for문으로 풀었다.유연한 사고를 가져보자..스트림은 왜 사용법을 맨날 까먹는걸까. 한번 각잡고 정리해야겠다.여기서 강제로 올림을
주식 가격문제 자체가 이해가 안갔다. 그래서 지인에게 물어보니 지인은 예시만 보고 대략 어떤걸 묻는 문제인지 파악했다.내가 문과라서 그런가...지문이 이해가 안가면 그 뒤로 넘어가질 못한다.아무튼...큐로 풀었다. 마지막에 cnt가 얼마던 마지막까지 등록해줄 수 있도록
타겟넘버이미 한 번 풀었던 문제다. 문제 풀이하는 곳에 풀이가 적혀있어서 뭔가 했는데, 예전에 풀었던 문제이었다.안 푼 문제로 필터링걸었는데...뭔가 작동이 잘못되었나보다.그나저나 나는 dfs/bfs 문제만 나오면 머리에 과부하가 걸린다. 멍청하다.공포증이라도 있는건지
프린터문제에서 대놓고 큐 문제입니다~라고 알려주길래 쉽겠지 했는데 생각보다 어려웠다.나는 인덱스 전용 큐를 따로 만들어두고, 가장 큰 값이 아닌 경우 큐에 더해질때 해당 인덱스도 같이 더해질 수 있도록 하였다.그리고 만약 가장 큰 값인 경우에는 기존 큐에서 해당 값만
더 맵게처음에는 array를 사용해서 풀었다. 테스트 케이스는 통과했지만, 효율성 테스트에서는 죄다 실패했다. 처음에는 왜인지 이해를 못했는데, array의 경우 무조건 배열에 대해서 정렬을 해야만 했는데, 이게 효율성에서 실패를 하게 된 원인이었다.몰라서 이거저거 찾
멀쩡한 사각형한 시간정도 규칙성을 찾았는데, 결국 못찾아서 힌트를 찾았다.정답은 최대공약수를..위의 계산식처럼 가로 x 세로에서 가로 + 세로 - 최대공약수 를 빼야하는 규칙성이 있었다.음...규칙성 못 찾는 것은 그럴 수 있긴한데 최대공약수라니...생각하지도 못한게
메뉴 리뉴얼문제 설명이 개똥이다. 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 이걸보고 어떻게 같은 길이의 메뉴중에서 가장 많이 주문이 된 메뉴만 선정하는 건지 이해할 수 있지?이것때문에 두세시간은 더 걸렸다. 결국
짝지어 제거하기생각보다 문제가 쉽게 풀려서 놀랐다.자료구조는 신이야!
소수 찾기순열도, 소수판단도 전부 내가 직접 코드를 짜지 못했다.아무래도 dfs에 대해서 더 공부를 해야할 것 같다.(순열도..)
문제 링크 가장 큰 수 풀이 소감 알고리즘 문제를 풀 때마다 느끼는거지만 항상 어떻게 풀어야하는지를 모른다. 문제의 방향성을 알아야하는데, 문제의 방향성을 잡지 못 한다. 이게 늘 문제다. 이번 문제도 처음에는 당연하게 순열로 풀어야하는줄 알았다. 그러나, 순열로
조이스틱문제에서 알파벳을 변환하는 부분은 아주 간단하게 구할 수 있다.A에서 Z방향으로 움직이면서 바꾸느냐, 아니면 A에서 바로 Z로 건너가서 역뱡향으로 움직이느냐 두 가지를 고려하면 된다.ASCII 값으로는 대문자간에 1씩 차이가 난다. 그렇기에 이를 통해서 거리를
구명보트제한조건 구명보트 제한인원 2명사람들의 몸무게를 담은 배열 people를 정렬한번 해준다.그 다음에는 왼쪽과 오른쪽 인덱스를 담을 변수인 right와 left를 만들어준다.그 다음엔 반복문을 도는데, 어차피 보트에 무조건 한명은 탈 수 있기에, answer+1
카펫규칙성을 찾다보면 보이는게 하나 있다.brown + yellow는 최종 사각형의 가로 \* 세로 값과 동일yellow로만 이루어진 사각형의 가로와 세로는, 최종 사각형의 가로와 세로에서 각각 -2를 해주면 된다.yellow로만 이루어진 사각형의 넒이는 yellow의
게임 맵 최단 거리시작위치에서 목적지까지 최단거리를 구하는 문제는 bfs로 풀어야한다.Queue를 선언하고, 해당 큐에 Pos(ition) 객체를 넣는다.한번 방문했다면, boolean 타입의 배열인 visit에 true로 표시한다. 처음엔 dfs로 풀었다가 털리고,
2xN 타일링처음에는 dfs로 풀었다. 모든 경우의 수를 찾으면 되는거라고 생각했으니까. 그러나 시간 초과규칙성을 봤더니 피보나치 수열이라서, 재귀로 풀었다. 그러나 시간 초과.이 문제는 dp로 풀어야했다. 재귀로 피보나치 수열을 하면 시간복잡도가 o(n^2)로 좋지
큰 수 만들기만들어야 하는 수의 길이는 k개를 제외한 개수이기에, number.length() - k라고 할 수 있다.그리고 만들어지는 수는 개중에 가장 큰 수여야 하기에 앞자리수가 가장 '커야만' 한다.숫자를 제거하는 방식이기에 숫자의 순서를 재조합해서 순서를 뒤바꾼
거리두기 확인하기dfs문제 일거라곤 생각했는데, 구현을 못했고..나름 규칙성이랍시고 찾았는데, 웬걸...그게 풀렸다.문제에서는 p를 기준으로 설명했지만, 뒤집어서 생각해봤을 때 o와 x를 기준으로 해서 봐도 성립되는 것을 확인했다.그래서 그걸로 for문을 통해 완전탐색
피로도'던'이 생각나는 문제다.두 가지 풀이 방법이 생각났는데, 한 가지는 '순열'로 조합을 만들어서 모든 경우의 수를 따져보며 가장 깊게 탐색이 가능한 경우를 따져보는 것이고, 하나는 dfs를 해보는 것이다.당연하게도 둘 다 못짰다. 코테는 나한테 안 맞는다. 하하.
순위 검색도저히 방법이 생각나지 않아서 무식하게 풀어보았다.정확성 테스트는 전부 통과하였으나, 효율성 테스트에서 전부 시간초과로 탈락했다.어떻게든 시간을 줄여보려고 애를 썼지만, 그래도 여전히 탈락.카카오 2021년도 블라인드 기출문제라서 카카오의 풀이를 좀 찾아봤다.
올바른 괄호어제 문제가 헤비했던 탓인지 모르겠지만 나도 모르게 가벼운 문제를 골랐다.스택을 사용하면 아주 간단하게 풀 수 있는 문제였다.모든 문제가 이 정도만 되었으면 좋겠네
다리를 지나는 트럭큐를 사용해야하는 문제임은 깨달았다.그런데 규칙 찾다가 머리가 깨지는 줄.내가 잘못 생각하고 있었다. 트럭을 큐에 올리고, 그걸 이용해서 시간을 재면 되었는데 그렇게 생각을 못하고 있었음.다른 분이 푼 풀이를 보고나서야 깨달았는데, 트럭을 큐에 올린
H-Index문제가 뭔소린가 했는데, 오히려 링크로 준 꺼무위키를 보고 이해했다.H-Index는 h번 이상 인용된 논문이 h편 이상인 h의 최댓값이다.먼저 배열을 정렬해준다. (오름 차순)for문을 돌면서 배열 길이에서 현재 인덱스를 빼주면, 현재 인덱스보다 큰, 즉
3xN 타일링2 x N 타일링에 이은 3 버전이고, 조금 더 대가리가 아프다.직접 그려보면 홀수로 들어오면 경우의 수가 0인 것을 알 수 있다.규칙성을 찾다보니...다음과 같은 점화식을 확인할 수 있다.위와 같은 규칙으로 코드를 짜면된다.규칙성 찾기 대실패
모음 사전두 가지 방법이 있는데, 하나는 제시된 문자열에 대한 규칙성 찾기, 하나는 dfs를 이용한 완전 탐색방법이다.두 가지 모두 풀이해본다.주어진 문자열에 대해서 규칙성에 맞게 써내려가다 보면 다음과 같은 규칙을 발견할 수 있다.앞에서 5번째 자리의 문자열 변화는
전력망을 둘로 나누기선을 끊고, 이걸로 bfs를 하면 되겠거니 생각은 했으나, 늘 생각은 하고 구현은 못한다.앞선 선을 끊는다를 어떻게 해야할 지 몰랐으니, 어쩔 수 없이 또 찾아보고 진행했다.인접 행렬을 구현해주고, 그에 맞춰서 선을 끊는 부분을 0으로 바꿔주면 되는
줄 서는 방법처음에는 단순하게 순열 문제일 것이라고 생각했다. 그러나 정확성 테스트에서 시간과 메모리를 엄청 잡아먹으며 통과하더니 효율성에서 어그러졌다.어떻게 풀어야하는지 날 모르겠어서 한참 고민하다가, 규칙성 문제라는 것을 다른 사람의 풀이를 보고 알았다.다음과 같은
두 큐 합 같게 만들기매 순간에 각 큐의 누적합의 크기를 비교해서 누적합이 큰 쪽에서 poll하고, 적은쪽에 add해준다.그리고 그 순간마다 cnt를 누적해서 총 횟수를 구한다.정확성 테스트 25,26,27번이 계속 통과가 안되었다. 뭐가 문제인지 계속 확인해보다가..
캐시다른 조건은 그렇게 어렵지 않았다. 그냥 캐시에 도시 이름 넣고 다음에도 동일한 도시 이름이 나오면 시간 + 1, 아니면 시간 + 5문제는 LRU 알고리즘을 구현해야하는 부분이었다.운영체제 시간에 배웠던 건데, Least Recently Used 알고리즘이라고 페이
최소 직사각형완전 탐색에 취약한 사람인지라 lv1이라도 풀어보고 싶어서 풀었다.for문을 통해 주어진 배열을 전부 돌면서, 긴 것을 가로로, 짧은 것을 세로로 세팅한 다음 그 중 가장 긴 것들을 찾아서 서로 곱해주면 된다.완전 탐색은...왜 아직도 쉽지 않은걸까
괄호 회전하기해당 문제는 스택 문제이다. 여는 괄호를 스택에 넣고, 닫는 괄호를 만나면 pop 해준다. 만약 반복문을 다 돌았음에도 stack의 크기가 0보다 크거나, 아니면 열린 괄호가 스택에 없음에도 불구하고 닫힌 괄호가 먼저 들어온다면 그 순간 false를 리턴해
n^2 배열 자르기문제 명, 문제 설명은 함정이다.규칙성을 발견해야 풀 수 있다.나는 왼쪽 좌표가 (left / n, left % n) , 오른쪽 좌표가 (right / n , right % n), 그리고 2차원 배열에 들어갈 값은 좌표중에 큰값 + 1 이라는 규칙성을
영어 끝말잇기이게 왜 lv2 문제지 싶을정도로 쉬운 문제였다.그냥 단순하게 조건문으로 앞의 단어 끝글자와 뒤의 단어 첫글자가 같은지 확인하고, 그 다음에 이미 사용된 단어인지 확인만 해주면 된다.그리고 리턴 값은 규칙을 조금만 찾아보면 알 수 있듯 i번째 / n + 1
주차 요금 계산"그냥 생각없이 하니까 풀렸다"말 그대로 무식하게 for문 돌면서 조건대로 계산하고, 결과를 따로 받게 하였더니 풀렸다.코드가 아주 더럽다. 한 번 리팩토링을 해야겠지만 지금은...Stream을 연습해본답시고 많이 써봤는데 아직도 헤맨다...더 자주 써서
k진수에서 소수 개수 구하기문제를 몇 단계 나눠서 풀었더니 의외로 쉽게 풀렸다.k 진수로 변환 , 판단이 필요한 숫자 분별, 소수 확인정답률이 높은걸로 정렬하고 풀었더니 잘 풀려서 기분은 좋다.추가로 소수인지 판별하는 방법중에 에러토스테네스의 체 라는 알고리즘이 있던데
택배상자처음에는 for문으로 order를 전부 돌면서 그 안에서 조건을 걸고 찾았었다. 결과는 테스트케이스 10개중에 6개까지 맞고 4개는 시간 초과왜인가 고민좀 해봤는데, 아무래도 for문 돌면서 (최대 100000개) 그 안에서 또 한번 더 while 돌면서 (아무
귤 고르기처음에는 조합문제라고 생각했다. 왜냐면 주어진 귤의 개수 중에서 조합의 수가 적은 순으로 골라내야하는 것이었으니까그런데 다르게 생각해보니 더욱 쉬웠다. 가장 적은 수의 종류를 뽑아내는 방법은, 애초에 많은 귤을 가진 사이즈를 기준으로 정렬해서 앞에서부터 제거해
이진 변환 반복하기0을 제거한 횟수, 그리고 이진 변환을 몇 번 하였는지도 같이 세줘야했다.이진 변환을 어떻게 해야할까 하다가...간단한 방법을 찾았다. Integer.toBinaryString(integer) 을 사용하면 integer에 해당되는 10진수를 2진수로
JadenCase 문자열 만들기어떻게 풀까 고민하다가 for문을 규칙성을 찾아서 돌렸다. 다만 첫번째 글자만 빼고.string 타입의 배열을 string으로 묶는건 stream뿐 아니라 String.join도 있다.
최솟값 만들기처음에는 순열을 생각했다. 그러나 머리를 좀 더 굴려보면 더 쉽게 풀 수 있다는 것을 알게된다.두 배열에서 하나는 오름차순 정렬, 하나는 내림차순 정렬로 해준 뒤에 순서대로 곱해주면 최솟값을 얻게 된다.정렬은 본인 마음대로 Arrays.sort를 쓰던 우선
숫자의 표현연속된 숫자의 합이 최종 타겟 숫자와 동일해지는 개수를 구하는 문제였고, 이는 재귀로 풀 수 있다고 생각했다.놀랍게도 처음으로 직접 재귀를 생각해서 구현해낸 답이었고, 효율성 테스트까지 잘 통과했다. 비록 쉬운 문제이지만 만족스럽다.
피보나치 수처음에는 간단하게 재귀로 풀 수 있는줄 알고 재귀로 풀었다.근데 시간 초과 발생하네...?뭐가 문젠지 공부좀 해봤고, 해당 문제는 재귀가 아닌 dp로 풀어야한다는 것을 깨달았다.dynamic programming으로 코드를 작성했으나..그러나 이번엔 결과 값
다음 큰 숫자처음에 이렇게 풀고자 하였다.주어진 int를 binaryString 메서드를 사용해서 2진법 string으로 바꾼다.그 다음에 string을 char 리스트로 바꿔서, Collctions.frequecy 함수를 사용해서 1의 개수를 카운팅해준다.이 방법을
N개의 최소공배수숫자 배열을 주고 모든 수의 최소공배수를 구하는 문제이다.최소공배수는 a와 b 두 수가 있다면 (a / 최대공약수) \* b 로 구할 수 있다.이 방식을 이용해서 풀이를 해보자.
점프와 순간이동처음에는 점프, 순간이동간의 규칙성을 찾고자 하였다.하나 하나 그려보면서 뭔가 이상하다 싶은 순간이 왔는데, 바로 주어진 수 n을 2로 계속 나누면서 나머지를 더해주면 답이 나온다는 것이었다.이걸 풀었다고 해야하나...잘 모르겠네
멀리 뛰기또 재귀로 풀었다가 시간초과 났다.dp로 푸는 습관을 들여야겠다.결론적으로는 피보나치와 동일하다. 처음에 1칸으로 뛰는건 한 가지 경우의 수, 그리고 2번째 칸으로 뛰는건 1-1, 2 으로 2칸이다. 이제 n을 향해 뛰는 것은 다음과 같이 생각해 볼 수 있다.
행렬의 곱셈행렬의 곱셈...은 고등학생 이후로 처음 보는 것 같다.기억을 되살리기에는 너무 오래전 이야기이기에 누군가 정리해둔 글을 읽고 겨우 생각해냈다..해당 문제는 그냥 for문을 3중으로 만들면 해결된다. 문제 해결하는 건 쉽지만... 행렬의 곱셈을 기억하는게 문
뉴스 클러스터링엄청나게 어려운 건 없었는데 헷갈리는 부분이 많았다.합집합 구할 때, 그냥 아무생각 없이 Set을 썼다가는 중복되는 요소들이 제거되면서 답이 이상하게 나오기도 했고, 교집합을 구할 때, retainAll() 메서드를 사용했다가 원하는대로 교집합이 안나오기
압축처음에 재귀로 푸는 것인 줄은 알아냈으나, 재귀를 짜는게 아직 서툴러서 너무 고통스러웠다.결국은 남이 푼 것을 보고 도움을 받아 풀었다.재귀 문제를 조금 더 많이 풀어보자.
연속부분 수열 합의 개수주어진 배열을 두 배로 우선 늘린다. 그래야 아웃 오브 인덱스 익셉션 안나지..처음에는 중복 for문으로 생각했다가 잘 안풀려서 투 포인터 알고리즘을 쓰는건가 싶었다.근데 그냥 중복 for 문으로 풀면 되더라.. 성능이 이상하게 나오지만;Arra
N진수 게임Java에서 n진수 구하는 방법은 Integer.toString(int n, int radix) 를 이용하면 쉽게 구할 수 있다.이를 통해서 우선 게임에 참가하는 인원 \* 튜브가 말할 숫자 개수 만큼 n진수의 값을 구한다.그 다음 구해진 값을 순서에 맞게
땅따먹기처음에는 for문을 하나하나 써서 Top-Down으로 만들어 보고 그걸 그대로 재귀로 풀었다. 그러나 재귀의 결말은 늘 시간초과거나 뭐 그렇다.이 문제를 어떻게 풀어야 할지 고민하다가 다른 분이 풀어놓으신 걸 보고 풀어낼 수 있었다.방법은 주어진 배열을 한번 씩
할인 행사배열을 하나하나 탐색하면서 이번엔 조건에 부합하는가? 를 묻는 문제다.이런 경우 sliding window를 생각하고 풀면 된다.늘 그렇지만.. 조건을 왤케 못짜는걸까
방문 길이해당 문제는 좌표를 방문한 지 확인하는 것이 아니라, 이 경로는 이미 방문한 경로인가? 를 확인하는 문제이다.그렇기에 경로를 String 으로 만들고, Set에 넣어 중복되는 경로를 없애면 구할 수 있다.(0, 0) -> (0, 1)과 (0, 1) -> (0
프렌즈4블록문제 접근부터 굉장히 헷갈렸다. 이게 BFS인지, 완전탐색인지...헷갈렸기 때문복잡한 문제일수록 간단하게 생각하면 쉽다...를 다른 사람이 풀어놓은 것을 보고 깨달았다.전체 탐색을 하면서, 2x2 블록을 탐색하고 조건에 부합한다면 그 부분만 다른 배열에 표시
파일명 정렬꽤 무식하게 풀었다(?)객체를 따로 생성해서 이를 통해서 List의 정렬을 사용했다.위에서 단순하게 캐릭터로 head, number, tail을 잘라냈는데, 이를 regex와 matcher를 사용해서 한 사람도 있던데...다음에는 사용해봐야겠다.
2개 이하로 다른 비트처음에는, '비트'라는 문자가 제목에 있었고, 문제 내용도 간단하게 XOR 비트 연산을 이용해서 하면 될 것 같았다.그래서 그 대로 문제를 아래와 같이 풀었다. XOR 연산을 이용해서 비트가 다른 경우 1을 찍어주게 한 다음, 1의 개수를 세었다.
2개 이하로 다른 비트처음에는, '비트'라는 문자가 제목에 있었고, 문제 내용도 간단하게 XOR 비트 연산을 이용해서 하면 될 것 같았다.그래서 그 대로 문제를 아래와 같이 풀었다. XOR 연산을 이용해서 비트가 다른 경우 1을 찍어주게 한 다음, 1의 개수를 세었다.
쿼드압축 후 개수 세기Top-Down으로 생각해보면 풀리는 문제이다.주어진 2차원 배열이 모두 같은 수로 이루어져있는지 확인한다.맞다면 해당 2차원 배열의 첫번째 수에 해당되는 수를 카운트 + 1 해준다.아니라면 탐색하는 2차원 배열을 4등분하여 4등분되는 2차원 배열
덧칠하기이미 칠해진 곳은 덧칠해도 상관없음다만 최소로 칠하는 덧칠 횟수 찾기처음에는 덧칠해야하는 곳중에서 시작한다.시작점 + 롤러너비를 max 값으로 잡아서 그 다음에 덧칠해야하는 빈벽의 인덱스가 max 값보다 작으면 그때는 pass 할 수 있도록 한다.슈도코드로 짜보
롤케이크 자르기토핑을 처음에 모두 형에게 준다고 생각하고 topping 배열을 Map<topping 종류, topping 개수> 로 만든다.동생의 롤케이크를 Set으로 만들고, 그 다음에 topping 배열을 순차적으로 돌면서 동생의 Set에 넣고, 형의 Map에
삼각 달팽이풀면서 그림을 그려봐야한다.주어진 삼각형을 2차원 배열로 밀어넣으면, 직각삼각형 형태로 나온다.그러면 예시로 주어진 n이 4인 정삼각형은 다음과 같이 그릴 수 있다.주어진 그림에서 우리가 찾을 수 있는 규칙성은 다음과 같다.고로, 위의 n이 4인 경우는 다음
뒤에 있는 큰 수 찾기처음에는 다음과 같이 풀었다.앞에서부터 탐색하면서 '가장 가까운 큰 수'를 탐색만나면 해당 시작점의 인덱스에 맞게 값을 삽입시간복잡도 예상 O(n^2)시간 초과다음으로 푼 방법은 다음과 같다.배열을 다음과 같이 반복문을 돌리면서 진행한다.스택이 비
광물캐기헤딩 문제는 다음과 같이 풀었다.곡괭이의 개수 \* 5 만큼 광물 배열의 인덱스를 자른다. 어차피 곡괭이를 다쓰면 더는 못 캔다.남은 광물을 5개 씩 묶어서 각 곡괭이별로 드는 비용을 계산한다. 이걸 배열로 만든다. (ex > new int\[]{dia, iro
하노이의 탑재귀를 푸는 방법은1\. 규칙을 구하고2\. 적용한다 이다.하노이의 탑은 아래와 같은 규칙을 발견했다.n 개의 원판중 n-1 개의 원판을 두 번째 기둥으로 옮기고마지막 원판을 세 번째 기둥으로 옮긴다음n-1 개의 원판을 세번째로 옮긴다.위 규칙을 토대로 코드
길 찾기 게임처음에는 DFS 인줄 알았으나, 전위탐색 (preOrder), 후위탐색(postOrder)를 보고 이진탐색트리라는 것을 알았다.주어진 node 배열을 우선 Node 클래스의 리스트형태로 만든 다음, 노드의 높이 값에 맞게 정렬을 하고 해당 리스트를 이진탐색