[프로그래머스/java/Lv.0] n의 배수 고르기 ⭐⭐⭐

2024. 11. 25. 15:02·코테/프로그래머스 JAVA Lv.0

 

 

 

 

* 문제 풀이

class Solution {
    public int[] solution(int n, int[] numlist) {
        // 1. n의 배수 개수를 계산
        int count = 0;
        for(int i = 0; i < numlist.length; i++){
            if(numlist[i] % n == 0){
                count++;
            }
        }
        
        // 2. n의 배수를 저장할 배열 생성    
        int[] answer = new int[count];
        int index = 0; // answer 배열의 현재 위치를 나타내는 변수
        
        //3. n의 배수를 answer 배열에 저장
        for(int i = 0; i < numlist.length; i++){
            if(numlist[i] % n ==0){
                answer[index] = numlist[i];
                index++; // 다음 위치로 이동
            }
        }
        return answer;
    }
}

 

1. n의 배수 개수를 계산

for문을 통해 numlist 배열의 모든 요소 확인

if 조건을 통해 numlist[i]가 n의 배수인지 확인

n의 배수라면 count를 1씩 증가시킴

 

2. n의 배수를 저장할 배열 생성

count 값으로 정확한 크기의 배열 생성.

answer 배열에 값을 넣을 위치를 따로 관리하는 index 변수를 선언.

=> 왜? 배열의 인덱스를 순서대로 써야하기 때문에 

answer[i] = numlist[i]; i 값 그대로 인덱스로 사용하면 배수가 아닌 숫자들의 경우 배열 범위를 벗어나거나 빈 공간이 생긴다.

예) int[] numlist = {4, 5, 6, 7, 8, 9, 10, 11, 12}; / n = 3 

      => 3의 배수는 6, 9, 12 총 3개. answer 배열의 크기는 3이므로 answer[0], answer[1], answer[2]까지 존재

 

answer[i] = numlist[i]; 코드를 사용할 경우, 

i = 0 / numlist[i] = 4 ~> 4 % 3 != 0    answer[0]에 대입 불가능

i = 1 /  numlist[i] = 5 ~> 5 % 3 != 0      answer[1]에 대입 불가능

i = 2 /  numlist[i] = 6 ~> 6 % 3 == 0      answer[2] = 6

그러나 이 이후부터 배열 초과하므로 에러 발생!

 

3. n의 배수를 answer 배열에 저장

for 문으로 numlist 배열의 모든 요소를 돈다.

if 조건을 통해 n의 배수 확인하고 index에 저장

 

 

 

 

 

 

* 다른 풀이

class Solution {
    public int[] solution(int n, int[] numlist) {        
        int count = 0;
        for (int num : numlist) {
            if (num % n == 0) {
                count++;
            }
        }

        int[] answer = new int[count];
        int index = 0;

        for (int num : numlist) {
            if (num % n == 0) {
                answer[index++] = num;
            }
        }

        return answer;
    }
}

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'코테 > 프로그래머스 JAVA Lv.0' 카테고리의 다른 글

[프로그래머스/java/Lv.0] 모음 제거  (0) 2024.11.28
[프로그래머스/java/Lv.0] 뒤에서 5등까지  (0) 2024.11.26
[프로그래머스/java/Lv.0] 정수 부분  (0) 2024.11.22
[프로그래머스/java/Lv.0] 문자열 정수의 합  (0) 2024.11.21
[프로그래머스/java/Lv.0] 문자 반복 출력하기  (1) 2024.11.20
'코테/프로그래머스 JAVA Lv.0' 카테고리의 다른 글
  • [프로그래머스/java/Lv.0] 모음 제거
  • [프로그래머스/java/Lv.0] 뒤에서 5등까지
  • [프로그래머스/java/Lv.0] 정수 부분
  • [프로그래머스/java/Lv.0] 문자열 정수의 합
amying
amying
공부해보겠슨
  • amying
    꽁꽁 얼어붙은 자바 위를 자박자박
    amying
  • 글쓰기 관리
  • 전체
    오늘
    어제
    • 분류 전체보기 (332)
      • 공부 (55)
        • JAVA (17)
        • Spring (17)
        • Java Script (1)
        • React (0)
        • SQL (3)
        • DB (1)
        • CS (13)
        • 기술면접 (3)
      • Git (2)
      • 강의 (36)
        • 부스트코스: Connect On: 테크와 나를 잇.. (16)
        • 부스트코스: CS50 (20)
      • 네이버 부스트캠프 베이직 (25. 06) (0)
      • 에러 (10)
      • 코테 (205)
        • 백준 (29)
        • 프로그래머스 JAVA Lv.0 (116)
        • 프로그래머스 JAVA Lv.1 (7)
        • 프로그래머스 SQL (53)
      • 개인 프로젝트 (16)
        • 책첵 CHAEKCHECK (2)
        • 일정 관리 서비스 만들기 (0)
        • 게시판 만들기 (eclipse-JSP) (14)
      • 이것저것 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Java
    ORACLE에러
    프로그래머스
    코테
    알고리즘
    springbot
    코딩테스트_입문
    CS50
    에러
    책첵개발일지
    오라클에러
    데이터연동
    git명령어
    부스트코스
    업무자동화
    부스트코스강의
    lombok
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.4
amying
[프로그래머스/java/Lv.0] n의 배수 고르기 ⭐⭐⭐
상단으로

티스토리툴바