예를 들어 lost = {2,4} , reserve = {1,3}일 경우, 2번이 3번에게 빌리면 4번은 빌릴 곳이 없다. 따라서 밑의 로직을 따라야 한다. lost±1이 전부 reserve에 존재할 경우, lost-1의 번호에게 먼저 빌린다.첫 시도 : 제한사항 바로
int\[] score에 choices에 대한 점수 표현hashMap<Character,Integer> 을 사용해서 각 유형(Character)에 대한 점수(Integer)를 저장for(int i;i<survey.length;i++)를 돌면서 각 선택에 대한
문제 나의 풀이 정말 정석적으로 생각했다. 각 String을 돈다 index의 char을 확인한다. 이전 문자와 같은 문자라면 break; (같은 발음이 연속될 수 없으므로) a/y/u/m 네 문자 중 하나인지 확인하고, 그 외 문자일 시 break;
점수, 보너스, 옵션 각각의 배열을 만들었다.점수가 두자리수가 넘어가는 경우는 '10'인 경우 하나밖에 없다. \- 점수가 10인 경우에는 숫자 1이 먼저 나오고, 이어서 또 숫자 0이 나온다. -> 숫자인데 해당 인덱스에 이미 '1'이 저장되어 있는 경우는 점수가
주어진 arr 배열을 먼저 정렬한다.divisor로 나누어 떨어지는 수들만 queue에 넣는다.queue에서 하나씩 꺼내어 반환 배열에 넣는다.나는 queue를 사용했는데 list를 사용한 풀이이다.로직 상 크게 다른 점은 없지만 내가 고민했던 'list를 int 배열
내가 조금 헤맸던 부분은 3단계였다. 처음에 replace를 한 번만 실행해서 "..."와 같은 부분은 처음 ".."가 "."로 바뀐다 하더라도 ".."로 바뀌는 문제가 있었었다. 테스트 코드를 디버깅 하는 과정에서 다행히 이 문제를 인지해서 while문 안에 넣어 주
int\[] challengers : i번째 스테이지를 현재 도전 중인 사용자의 수int\[] acheivers : i번째 스테이지에 도달한 사용자의 수\-> achivers\[i] = acheivers\[i+1]+challengers\[i];i번째 스테이지에 도달한
String answer1,String answer2,String answer3 : 각 수포자들이 찍은 정답들.수포자 1은 12345의 5문자가 반복되고, 수포자2는 21232425의 8문자가, 수포자3은 3311224455의 10문자가 반복된다.new String(n
프로그래머스 Lv.1의 문제 중에 비슷한 문제를 풀었어서 보자마자 바로 코드를 짰다.그런데 보다싶이 효율성 테스트에서 시간초과가 떴다. 이럴수가 ..괄호의 수가 홀수면 맞아 떨어질 수가 없으므로 바로 false 리턴.stack을 사용하지 않고 int를 사용한다.=> (
행렬 A의 열의 개수와 행렬 B의 행의 개수가 같을 때행렬 A의 제 i행 성분과 행렬 B의 제 j열의 각 성분을 그 순서대로 곱하여 더한 것을 (i,j)성분으로 하는 행렬을 두 행렬 A와 B의 곱이라 한다.즉, 행렬 A와 행렬 B의 곱인 행렬 C에 대해서 (A의 열의
int\[] neededDays : 각 기능의 진도율이 100 이상이 되기 위해 필요한 날의 수Stack<Integer> stack: 각 배포마다 개발되는 기능의 수들을 저장int cnt: 각 배포마다 개발되는 기능의 수int must: 이번 배포를 위해 반드시
코드를 짜기 전 손으로 짜본 로직은 다음과 같다.str1과 str2를 toUpperCase 처리한다. (case-insentive하므로)str1과 str2를 순회하며 원소를 각 Map에 넣는다\-> 2글자씩 넣는다.\-> 글자 중 하나라도 영문자가 아닌 경우 넣지 않는
전화번호를 길이가 짧은 순으로 정렬전화번호를 하나씩 순회하며 set에 있는 전화번호로 시작하는 것이 있는지 확인있다면 return false없다면 set에 넣기지금 다시 보며 생각해보니 정말 별로인 풀이이다.Set을 사용하는 이점 중 큰 부분이 검색에서 O(1)를 가진
단순히 모든 경우의 수를 전부 계산해보는 풀이이다.각 숫자에 1또는 -1을 붙이는 작업을 비트에 대입한다.만일 numbers의 원소가 4개라면 각 숫자에 1또는 -1를 붙이는 작업을 할 때\++++,+++-,++-+,...,----의 2의 4제곱개의 경우의 수가 생긴다
int idx : 사전에 넣을 때 쓰일 색인 번호. 현재 26까지 들어가있으므로 27부터 시작while 문이 사전에서 현재 입력과 일치하는 가장 긴 w를 찾는 과정이다.w는 길이가 1인 문자열부터 시작한다. \-ex. msg="KAKAO"인 경우 w="K"부터 시작됨현
answer를 전역변수로 선언dfs(k,count,visited,dungeons) 를 돌면서 현재 answer보다 더 많은 던전을 돌았을 경우 그 값으로 answer를 바꾼다. \-k: 남은 피로도, count:방문한 던전 개수, visited:던전의 방문 여부, d
문제
숫자 변환하기 문제 문제 풀이 bfs 사용 (1). 시간초과 문제를 보자마자 '아 bfs를 사용해서 풀면 되는 간단한 문제군'이라 생각하고 코드를 짰다. 그러나 이 코드는 여러 개의 테스트 케이스에서 메모리 초과 의 결과를 얻었다. (2). visited[] 활
문제 바로가기우선 처음으로 생각이 났던 것은 백트래킹이었으나, DP로 풀어보고 싶어서 DP로 풀이를 작성했다. 학교 좌표가 특이하게 (n,m)이 아니라 (m,n)이라고 문제에서 명시하고 있다. 따라서 puddels로 들어오는 물에 잠긴 지역의 좌표를 그대로 사용하지 말
문제 바로가기x보다 큰 수를 차례대로 방문한다.x와의 비트 차이를 계산한다.xor 연산자를 통해 두 숫자 중 다른 비트를 골라내고, 모든 비트(64)를 검사하여 다른 비트의 수를 찾는다.차이가 1~2개일 때까지 계속한다.이 코드를 제출하니 테스트케이스 10번과 11번에
문제 바로가기예전에 풀었다가 시간 초과로 실패된 채 남아있던 코드이다.각 인덱스 i마다 해당 인덱스 뒤에 위치하는 원소를 모두 방문하여 더 큰 숫자가 나오면 그 값을 answer\[i]에 저장한다.시간복잡도 O(n^2)로, 시간 초과에 걸린다.생각한 접근 방식은 아래와
문제 바로가기자연수 S를 n개로 쪼갠 것 중, 원소의 곱이 최대가 되는 중복 집합을 반환하는 문제예를 들어 자연수 8을 2로 쪼개보자.(1,7) (2,6) (3,5) (4,4)이 중 원소의 곱이 최대가 되는 것은 (4,4) = 8 이다.다음, 9를 2로 쪼개보자.(1,
문제 바로가기1) 나간 지점이 큰 순으로 정렬한다.2) 한 차량씩 방문하여 같은 카메라를 사용할 수 있는가의 여부를 판단한다.1) 은 static class Car를 만들고, Comparable을 구현하여end가 큰 순대로end가 같다면 start가 작은 순대로정렬되도
문제 바로가기일단 최단 거리를 구하는 문제이고, 출발지 S, 도착지 A, 도착지 B가 있다.따라서 S -> A의 경로, S -> B의 경로를 모두 구해야 한다.그런데 두 사람이 출발지 S에서 동시에 출발해서 어떤 경유지 V까지는 함께 갈 수 있다. 그리고 이 V에서 다
문제 바로가기모든 노드를 y좌표가 큰 순 - y좌표가 같다면 x좌표가 적은 순으로 정렬한다. \-> 트리를 이루는 순서대로 정렬정렬된 노드를 하나씩 트리에 삽입한다. 이 때, x좌표를 키로 하는 이진 검색 트리의 삽입 알고리즘을 따른다.완성된 트리를 전위순회, 후위순회
문제 바로가기queue1과 queue2를 이은 새로운 큐를 만든다.큐에서 연속되는 원소의 합이 두 큐의 합의 절반이 되는 start값 + end값의 최솟값을 구한다.두 큐의 합을 같게 만들 수 있는 경우, (start + end의 최솟값) - (middleIdx-1)