목록java (47)
우당탕탕 개발일지
문제이 중 연속된 몇 개의 수를 선택해서 구할 수 있는 합 중 가장 큰 합을 구하려고 한다. (1개 이상 선택)예를 들어서 10, -4, 3, 1, 5, 6, -35, 12, 21, -1 이라는 수열이 주어졌다고 하자. 여기서 정답은 12+21인 33이 정답이 된다. 풀이1차 시도: 시간 초과n의 최대값이 100,000인데 2중 for문이라 시간초과가 발생하는 것 같다.Dynamic Programming 문제인데 이를 제대로 사용하지 못했다.public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i =..
문제n: 박스 개수w: 한줄에 박스 개수num: 빼고 싶은 박스 번호 풀이boxArr 2차배열에 제시된 그림처럼 박스 번호를 저장했다.짝수와 홀수에 따라서 저장되는 식을 만들어 넣었다짝수: w * i + (j+1)홀수: w * (i+1) - j 저장하면서 꺼내려고 하는 박스 번호와 마지막 박스 번호를 각각의 변수에 저장했다.꺼내려고 하는 박스위에 몇줄이 있는지 확인하고 그 값을 출력하면 끝..!이 과정이 너무 오래걸림.... ㅠ 다른 사람 코드를 보니 배열에 저장하는 경우는 없었다... 넘 무식하게 푼것 같다...ㅎ다른 방법을 공부해봐야겠다. 최종 코드class Solution { public int solution(int n, int w, int num) { int h = n/w +..
문제풀이1번째 시도: 실패예시 문제는 다 맞았다...! 하지만 틀렸다고 나온다...import java.util.*;public class Main { private static int[][] aptFill(int[][] apt, int downk, int n) { if(apt[downk][n] == 0) { apt = aptFill(apt, downk-1, n); } for(int i=2; i 질문 게시물에 올린 답변에 반례를 알려주셨다. 덕분에 문제인 부분을 찾았다.1번 TC에서 답을 출력하고2번 TC에서 답을 구하는 과정에서 1번 TC에 수행했던 'apt[downk + 1][i]' 값에 apt[downk][i] 값을 계속 ..
문제같은 시간대에 게임을 이용하는 사람이 m명 늘어날 때마다 서버 1대가 추가로 필요k = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다. 입출력 예 풀이나는 큐에 삭제할 시간과 개수를 저장해서 관리했다.answer: 결과값serverCount: 현재 서버 개수timeQueue: {삭제한 시간, 개수} 1. 서버 증설해야 하는 경우조건1. 기준 인원보다 접속인원이 이상일 경조건2. 필요한 서버 수보다 현재 서버 수가 적을 경우 해당 조건에 충족하면 증설 회수와 서버 개수 설정한다.그리고 나중에 서버가 삭제 시 필요한 정보를 Queue에 저장한다. 2. 서버 삭제해야 하는 경우조건1. 삭제 정보가 있는 경우조건2. 삭제 시간이 되었을 경우 조건을 충족하면 서버 개수를 재설정 후, 해당 삭..
문제양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 입출력 예 풀이사실 어떻게 하라는건지 감이 안옴..... 그래서 일단 엑셀에 한번 표현! '질문하기' 살펴보니까 오른쪽 -> 아래 -> 왼쪽 -> 위 이걸 생각하면서 언제 방향을 바꿀지에 대해서 고민해보라고 했다.. 처음에는 이중 반복문으로 잡고 있다가 while문 사용해보기로..! 변수는 총 4개가 필요했다. row : 행 번호col : 열 번호num : 저장할 숫자d : 이동 방향을 의미하는 변수* 변수 d는 아래와 같은 규칙으로 이동해보기로 했다.0: 오른쪽, 1: 아래, 2: 왼쪽, 3: 위 ..
[ 문제 ] 조건이 너무 많음...최신순인기순최신순 + 타입별인기순 + 타입별최신순 + 검색인기순 + 검색최신순 + 타입별 + 검색인기순 + 타입별 + 검색이렇게 8개.....이걸 조건문으로 구현하니까 보기 불편하고 약간 의미없는 느낌....?? 그리고 나중에 정렬 조건이 많아지면 확장성에 어려움이 생기지 않을까? 고민이됨...그래서 일단 GPT한테 물어봄Page entityList = null; if (sortby == 0 && type == 0 && query == null) { // 최신순 entityList = templateRepository.findByAgree(true, pageable); } else if (sortby == ..
문제Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다. Leo가 가진 음식의 스코빌 지수를 담은 배열 scoville과 원하는 스코빌 지수 K가 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하도록 solution 함수를 작성해주세요. 제한 사항scoville의 길이는 2 이상 1,000,000 이하입니다.K는 0 이상 1,000,000,000 이하입니다.scoville의 원소는 각각 0 이상 1,000,000 이하입니다.모든 음식의 스코빌 지수를 K 이상으로 만들 수 없는 경우에는 -1을 return 합니다. 입출력 예 풀이1차 시도스코빌 지수가 가장 낮은 2개 음식이라고 했으니, PriorityQueue에 저장하여 오름차..
문제 입출력 예시풀이 머리로 잘 그려지지 않아서 엑셀에 표현해봄!나는 프로세스명을 '인덱스P'로 표현하였고 큐에 저장함 currentIndex: 프로세스명에서 추출currentProcess: 실행할 프로세스currentPrioiry: 프로세스의 우선순위maxPriority: 최고 우선순위 현재 프로세스의 우선순위보다 더 높은 프로세스가 있다고 판단>> 큐에 해당 프로세스 add() 현재 프로세스가 가장 높은 우선순위임!answer은 프로세스가 실행한 순서를 의미하기에 +1 현재 실행한 프로세스가 문제에서 원하는 값일 경우에 반환그렇지 않으면 우선순위 재설정함(남아있는 프로세스 중에서 최고 우선순위 값 저장) 최종 코드public int s6(int[] priorities, int loc..