제한사항 array의 길이는 1 이상 100 이하입니다. array의 각 원소는 1 이상 100 이하입니다. commands의 길이는 1 이상 50 이하입니다. commands의 각 원소는 길이가 3입니다. 중요한 건 Commands에 "모든" 배열에 대하여 각각 연산을 하고, 리턴 값을 받아야 한다는 것. 이 점만 주의하면, 딱히 신경쓸 건 없어보이는 쉬운 문제이다. 배열과 i, j를 받아 우선 받은 배열을 자르는 cutter 메서드를 추가하고, commands의 개수만큼 cuuter로 자른 결과 배열을 정렬, 그 후 찾는 위치에 있는 값을 출력하도록 작성했다. package com.choonham; import java.util.ArrayList; import java.util.Arrays; impo..
명령어 데이터를 받아서 이를 따로 읽어들여 연산을 처리하는 이중 Priority Queue를 구성하면 되는 문제인 것 같다. 이런 LV3 문제들은 제한 사항을 똑바로 숙지하지 않아서 삽질을 하는 경우가 꽤 있었으므로, 제한 사항을 따로 적어 확실하게 하고 넘어가는 것이 좋겠다는 생각이 든다...ㅎㅎ 어제 데어봐서.. 제한 사항: operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식으로 주어집니다.- 최댓값/최솟값을 삭제하는 연산에서 최댓값/최솟값이 둘 이상인 경우, 하나만 삭제합니다. 빈 큐에 데이터를 삭제하라는 연산이 주어질 경우, 해당 연산은 무시합니다. 첫 시도는 오름차순과 내림차..
또, 예시가 1개뿐인 문제를 만났다. 상당히 복잡해 보이는 문제지만, 대기 시간이 0인 작업을 먼저 처리해주고 그다음에 작업 시간이 짧은 작업 순으로 처리하여 평균 시간을 구하면 풀릴 줄 알았다... package com.choonham; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.PriorityQueue; class Solution { public int solution(int[][] jobs) { int disk = 0; int sum = 0; int answer = 0; List tempArray = new ArrayList(); PriorityQueue pq = new..
오늘은 Heap의 LV3 문제를 하나 푸려고 프로그래머스에 접속을 했는데, 평소에는 보이지도 않던 실력 체크라는 탭이 눈에 들어왔다. ㅎㅎ... 코테 문제를 풀기 시작한 지 이제 2주 정도 접어들었는데, 내 실력은 어느 수준일까? 한번 확인해보고 싶기도 하고, 괜한 호기심이 생겨서 가볍게 LV1부터 풀어보기로 했다. 1번 문제: 복잡해 보이지만, 사실 들어오는 입력 배열에서 중복 값을 제거한 포켓몬 종류의 수가 (입력 배열 / 2)의 값보다 큰 지 비교하여 출력 값을 결정해주면 되는, 짜는데 3분도 안 걸리는 아주 간단한 문제이다. 나는 HashSet을 이용하여 중복 값을 전부 제거한 뒤, 비교하는 과정을 진행했다. package com.choonham; import java.util.HashSet; c..
계산식: 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2) 개인적으로 이렇게 테스트 케이스를 하나만 주는 경우를 굉장히 싫어한다. 테스트 케이스'만' 성공했을 때 그 반례를 찾기가 너무 시간이 오래걸려서 잘못하면 진짜 몇시간씩 진전도 없이 날리는 경우가 생기기 때문에.... 이 문제는 어제 포스팅에서 정리한 Heap이나 Priority Queue만 잘 활용하면 별 문제 없이 해결할 수 있는 문제이다. 우선 받은 스코빌 지수 배열을 모두 Priority Queue에 저장하여 insert와 동시에 스코빌 지수가 낮은 순으로 자동 정렬될 수 있게 만들어 주고, 스코빌 지수가 낮은 두 음식을 섞을 함수를 따로 만들어 저장해주면 끝! 사실 자료..
프로세스 순서: 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 처음엔 처음 작업할 문서를 꺼내서 나머지 문서의 중요도와 비교한 뒤 꺼낸 문서의 중요도가 대기 문서 중 한 문서라도 중요도가 밀리면 두 문서를 서로의 위치에 교환하는 작업으로 오해했다. 그렇게 생각하면 중요도가 높은 문서의 위치를 기억하고 있다가 작업 마지막에 맨 앞 문서와 바꿔줘야 했기 때문에 단순 queue로 문제를 푼다고 가정하면 작업이 매우 복잡해지고, 어려워진다. 그래서 실제로 굉장히 오랜시간 삽질하다가 LinkedList는 인덱스의 위치별로 값을 반환..
그렇게 높은 난이도라고 생각하지 않았다. 배포가 가능해지는 날까지의 기간들을 Queue에 넣고 다음 작업의 기간과 비교하며 해당 작업을 빼내고 day에 배포한 기능의 수를 더해주는 방식으로 코드를 짰다. Code: package com.choonham; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; class Solution { public ArrayList solution(int[] progresses, int[] speeds) { ArrayList answer = new ArrayList(); ArrayList list = new ArrayList(); int n = 0; int days = 0; int..
...? 이해가 잘 안되는 문제였다. 처음엔 그저 stack하나를 선언해놓고 주식의 가격이 기준치부터 stack에 다음 가격과 비교하여 넣는 코드를 작성했다. 첫 코드는 이중 for 문 안에서 스택이 비었는지 확인하고, 비어있으면 스택을 하나 채운 뒤 다음에 올 가격과 비교 후, 가격이 같거나 올라갔을 경우 계속 우겨넣다가 가격이 떨어지는 순간, 스택의 크기를 측정하여 사이즈를 정답 배열에 넣어 완성했다. break도 없고 하나의 stack을 계속 지웠다 썼다 하니, 당연히 시간 초과가 나올 줄 알았으나, 첫번째 시도는 테스트 케이스 1(예시로 나온 케이스) 만 통과하고 나머지 19개의 테스트 케이스를 모조리 틀렸다. 뭐...시간도 당연히 초과되었다. 두번째 코드는 stack을 null값으로 메모리를 미..
트럭이 한 대씩 다리를 지난다. 즉, 먼저 다리를 건너기 시작한 트럭이 무조건 먼저 다리를 빠져나간다. Queue를 사용하면 간단하게 풀리는 문제이다. 처음엔 endPointer을 truck_weight 개수만큼 만들어 push와 pop을 구현하여 만들려고 시도했으나 for문 로직을 완전히 잘못 이해하여 좀 많이 허우적거렸다. 결국 돌고 돌아 LinkedList를 사용하는 JAVA 내부 Queue 클래스를 사용하여 문제를 풀었다. 트럭의 대수만큼 반복문을 돌리고 그 안에서 while문을 돌려 새로운 트럭이 다리를 건너기 시작하면, while을 빠져나와 다음 트럭을 확인하는 절차를 가진다. 반복문은 마지막 트럭이 다리에 올라가면 종료하므로, answer 은 다리의 길이만큼 증가시켜야 정답이 나온다. Cod..
처음엔 무작정 로직을 그대로 구현하려고 마음을 먹었다. 복잡해 보이는 문제일수록 오히려 한번 데이는 것이 좀 더 효율적인 방법을 빠르게 찾는 방법인 경우도 때때로 있었으니...그러나 제한 사항을 두번, 세번 보다가 문득, 이 문제는 Comparable이나 Comparator을 사용하지 않으면 진짜 엄청난 노가다 문제가 될 것 같다는 확신이 들었다. 객체와 sort를 이용한 해결 방법은 다음과 같다. 1. plays, ids를 인자로 갖는 SongInfo 객체를 조회수 내림차순, id 오름차순으로 정렬할 Comparable 과 함께 생성 2. 조회수의 누적합 totalPlays와 SongInfo의 ArrayList를 인자로 갖는 GenresInfo 객체를 totalPlays 내림차순으로 정렬할 Compar..
- AsyncStorage
- 맛집
- redux-thunk
- 이탈리안 레스토랑
- 파니노구스토
- Promise
- 인천 구월동 맛집
- react
- Async
- redux
- 인천 구월동 이탈리안 맛집
- react-native
- 정보보안기사 #실기 #정리
- await
- javascript
- Total
- Today
- Yesterday