코테 준비 8일차_8/13

Jieun·2026년 8월 13일

코딩테스트 준비

목록 보기
1/8
  1. 수열과 구간쿼리4
    인덱스의 값이 k의 배수일 때 1을 더하는줄 알았는데 인덱스 자리가 k배수일 때 1을 더하는거였음
    i가 k의 배수인걸 찾아야되는데 i % k ==0 으로 하면 되나
    처음 작성한 정답
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = new int[queries.length];
        for(int i=0;i<quires.length;i++) {
            int s = queries[i][0];
            int s = queries[i][1];
            int k = queries[i][2];
            
            if(s<= i <= e) {
                answer[i] = quires[i];
                if(i % k ==0) {
                    answer[i] = +1;
                }
            }
            
        }
        return answer;
    }
}

제출한 정답

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        int[] answer = Arrays.copyOf(arr, arr.length);
        
        for(int i = 0; i < queries.length; i++) {
            int s = queries[i][0];
            int e = queries[i][1];
            int k = queries[i][2];
            
            for(int j = s; j <= e; j++) {
                if(k != 0 && j % k == 0) {
                    answer[j] += 1;
                }
            }
        }
        return answer;
    }
}

풀이
처음에 배열을 복사하지 않아도 arr 조작후 리턴해도 제대로 작동함

  1. 배열 만들기2
    0과 5로만 이루어진 수를 찾을려면 어떻게 해야될까 5 50 55 이런식인데 이걸 어떻게 검증해야될까
    도저히 아이디어가 안나와서 ai씀,,

제출한 정답

import java.util.ArrayList;
import java.util.List;

class Solution {
    public int[] solution(int l, int r) {
        List<Integer> list = new ArrayList<>();
        
        for (int i = l; i <= r; i++) {
            if (isValid(i)) {
                list.add(i);
            }
        }
           if (list.isEmpty()) {
            return new int[] { -1 };
    
        }
        
        return list.stream().mapToInt(i -> i).toArray();
    }
    
    private boolean isValid(int num) {
        String s = String.valueOf(num);
        for (char c : s.toCharArray()) {
            if (c != '0' && c != '5') {
                return false;
            }
        }
        return true;
    }
}

풀이
i부터 r까지 순회하고 조건에 맞으면 배열에 더하도록 for문 작성하고 배열에 아무것도 없으면 -1 반환하는 if 문 작성해서 문제 해결
0과 5로만 이루어진거 확인하려면 String.valueOf(num) 으로 숫자를 문자열로 변환 후 for(char c : s.toCharArray())으로 전체 문자열 확인하는 반복문 작성, c가 0과 5가 아니면 false 반환

  • 카운트 업
    for문으로 start_num보다 크고 end_num보다 작은조건 걸고 +1씩 배열에 넣으면 될듯
class Solution {
    public int[] solution(int start_num, int end_num) {
        int[] answer = {};
        for(int i = start_num;i<=end_num;i++) {
            answer = i;
        }
        return answer;
    }
}

풀이
우선 end_num - start_num + 1 배열의 크기로 배열 만들고 answer[i - start_num] = i;으로 배열에 값을 채워야됨

profile
비전공자의 백엔드 생존기: 어제보다 1% 더 성장하기

0개의 댓글