문제설명 생각하기 phone_book의 문자열을 정렬시킨다. 반복문을 이용해 정렬된 문자열을 비교 startsWith사용 내풀이 문자열이 숫자인 배열을 정렬시키면 ex) 119, 120, 123, 129, 130 ... 이기때문에 반복문을 한번만 사용해도 모든 문자열을 비교할 수 있다 .
문제설명 생각하기 scoville의 길이가 최대 1,000,000이기 때문에 최소값을 바로 찾는 PriorityQueue 최소힙을 사용한다. 최소값이 k보다 작을때 반복하며 원소가 하나 남았을땐 -1을 리턴 내 풀이 데이터의 크기가 크고 그 중 최소값 2개를 뽑아 더해야하는 문제이므로 우선순위 큐를 생각해야한다. java에서 PriorityQueue는 이진트리를 사용하여 시간복잡도 N(1)에서 최대 N(LogN)이 걸린다. PriorityQueue의 기능을 보자 .peek() -> 가장 우선순위가 높은 원소를 가져온다. ( 추가한 값은 우선순위에 맞게 정렬이 된다) .offer() ->queue에 원소를 집어 넣는다. .poll() -> 가장 우선순위가 높은 원소를 반환한다.
문제설명 생각하기 ArrayList를 이용해 return값을 저장하기 반복문과 조건문을 적절히 사용하기 내 풀이 두번째 while문을 빠져나가는 break 조건을 잘못설정해서 outofbound메모리오류가 1시간동안 났다.. 문제가 풀리지 않을 땐 내 코드를 차분히 다시 읽어보자. ArrayList를 int[]로 바꾸는 코드를 한줄로 쓸 수 있다. 를 꺼내기 남은 서류들 중 우선순위가 높은 서류를 찾기 (J)의 우선순위가 가장 높다면 ans++ location이 0이고, J의 우선순위가 가장높다면 return 내 풀이 두번째 for문에서 최악의 반복횟수를 생각하여 100!(팩토리얼)인 5050번 반복해준다. J(문서)를 꺼낸 뒤 리스트에서 삭제해준다. 가장높은 우선순위를 jmax에 넣어주고 반복문이 끝났을 때 J와 비교해준다. break문을 적절히 사용하여 최대반복 횟수인 5050을 채우지 않고 효율적인 속도를 낼 수 있다. 입출력 예 2번을 보면 location 0에 있는 1이 인쇄되는 순서를 찾아야 하는데 문제는 대기목록에 1이 중복되어 있기 때문에
문제설명 생각하기 깊이우선 탐색을 사용하여 문제풀기 dfs 함수를 만들어 순차적으로 +,-를 해주기 dfs함수가 끝났을 때 sum == target이라면 ans++해주기 내 풀이
문제설명 생각하기 문자열에 대한 기본적인 메소드들과 조건을 충족시켜 문자를 바꾸는 문제입니다. 문자열의 길이가 200이기 때문에 StringBuilder를 사용합니다. 각 문자열의 첫번째를 확인하기위해 int 변수 cnt를 초기화 시키고 활용합니다. 문자열 탐색도중 공백을 만난다면 cnt를 0으로 만들어 줍니다. 내 풀이 두번째 시도에 성공하였습니다. 첫번째 시도엔 문자열을 공백으로 나눈 String[]을 활용했지만 여러번의 공백이 나올 수 있기 때문에 적절하지 않은 방법입니다. 문자열 전체를 읽으면서 문자 하나씩 비교하는 전체 탐색알고리즘입니다. 키포인트는 공백이 여러번 나올 때 cnt를 0으로 만들어주고 반복문을 넘기는 것 입니다. 그래야 다음 문자열의 첫번째 글자를 확
문제설명 생각하기 반복문을 사용하여 풀건지 재귀로 풀건지 정하기 내 풀이 피보나치 문제는 팩토리얼 문제와 유형이 비슷하기 때문에 재귀함수로 푸는 실수를 하기 쉽습니다. 자료구조에 의하면 피보나치 문제는 재귀가 아닌 반복문으로 풀어야 시간적 제약을 적게 받는다고 합니다. 팩토리얼은 재귀 피보나치는 반복문 기억해야겠죠 ㅎㅎ
문제설명 생각하기 numbers를 str형태의 리스트로 바꿔주기 numbers를 lambda함수를 사용하여 내림차순으로 정렬하기 x*3을 이횽 문자열의 정렬은 아스키코드를 통해 비교하게 된다. 그렇기 떄문에 주어진 numbers가 '3', '30', '34', '5' ,'9' 일 때 333, 303030, 343434, 555, 999 를 내림차순하게 되면 '999', '555', '343434', '333', '303030' 으로 정렬된다. 정렬된 numbers를 str형으로 ""를 없애 하나의 문자열로 만들어준다. 코드  스코빌의 최소값이 k보다 작다면 -1을 리턴 스코빌의 값이 k보다 작지 않다면 cnt값을 리턴 내 풀이 첫번째 시도는 52.4점으로 실패다. 몇개의 테스ㅡ에서 런타임에러가
문제설명 생각하기 1.while문을 사용하며 location의 위치를 갱신해준다. location이 0일때 priorities[0]이 제일 크다면 cnt+1 리턴 location의 크기를 갱신할때 location은 변수, 이기 때문에 len(priorities)-1해주기 내 코드 첫번째 시도에 코드 함수들을 전부 짜놓고 조합을 못해서 실패
문제 설명 생각하기 기능을 완성시키는데 걸리는 시간을 각각 찾기 찾은 시간을 리스트화 시키기 0번째 배열의 시간을 저장하고 그 시간보다 큰 시간이 나올때 까지 cnt+=1을 진행 큰 시간이 나왔다면 res리스트에 cnt(한번에 배포할 수 있는 기능의 수)를 append해주고 3번을 반복해줌 내 코드 첫번째 시도 시간초과로 실패. 아무래도 for문안에 while반복문을 사용하여 시간복잡도가 좋지 않다. 두번째 시도 ![](https://images.velog.io/images/juntree/post/
문제설명 생각하기 1,2,4를 반복적으로 3의 배수마다 구현해야한다. n% 3 으로 1 -->1 2 -->2 3-->0 나머지가 이렇게 나온다. 배열 0,1,2을 사용해 1,2,4 각 숫자로 치환해주자 그러기 위해서 1-->0 2-->1 3-->2 가 되는 규칙을 찾아야한다. n의 값을 -1씩 빼준다면 0,1,2 값을 구할 수 있다 . 6 반복문 while을 통해 조건을 안에 넣어주고 n //=3으로 n값을 줄여준다. 그러면서 앞자리의 숫자를 구할 수 있다. 내 코드 문제복기 단