본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - 배열 만들기 2

by nam_ji 2024. 9. 18.

배열 만들기 - LV.0

문제

  • 정수 l과 r이 매개변수로 주어집니다.
  • l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를
  • 오름차순으로 저장한 배열을 출력하는 문제입니다.
  • 만약 그러한 정수가 없다면, -1이 담긴 배열을 출력합니다.


테스트 (인텔리제이)

  • l과 r 사이의 숫자 중에서 0과 5만 들어간 숫자를 구해야 하기 떄문에 l과 r 범위의 for문을 선언합니다.
  • 값을 비교하고 저장해도 될지를 정할 수 있도록 논리형 flag를 true로 선언해줍니다.
  • 이후 l과 r 사이의 숫자를 문자 배열로 변환하여 숫자 하나하나 비교하여 0과 5가 아닌 숫자가 들어 있는지 확인할 수 있게 문자열 s를 선언하고 for문의 반복되는 횟수를 나타내는 i를 문자열로 변환하여 s에 저장해줍니다.
  • 문자열로 변환된 s를 for문으로 문자로 쪼개 문자 하나씩 비교할 수 있도록 for문을 선언하고
  • if문으로 하나씩 쪼개진 문자를 0과 5가 아닌 숫자가 있다면 앞서 선언한 flag를 false로 저장해줍니다.
  • if문에 해당하지 않으면 0과 5로 이루어진 숫자이기 때문에 if문을 flag 조건으로 선언하여 answer에 i 값을 추가하도록 해줍니다.
  • 마지막으로 전체 로직을 벗어난 후 if문으로 answer가 빈 배열이면 -1을 추가하도록 해주면 됩니다.
package com.namji.codingtest;

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

public class 배열_만들기_2 {
  public static void main(String[] args) {
    /*
    정수 l과 r이 매개변수로 주어집니다.
    l 이상 r이하의 정수 중에서
    숫자 "0"과 "5"로만 이루어진 모든 정수를
    오름차순으로 저장한 배열을 출력하는 문제입니다.
    만약 그러한 정수가 없다면, -1이 담긴 배열을 출력합니다.

    제한사항
    1 ≤ l ≤ r ≤ 1,000,000

    입출력 예
    l	  r	    result
    5	  555	  [5, 50, 55, 500, 505, 550, 555]
    10	20	  [-1]
     */
    int l = 5;
    int r = 555;
    List<Integer> answer = new ArrayList<>();

    for (int i = l; i <= r; i++) {
      boolean flag = true;
      String s = i + "";
      for (char c : s.toCharArray()) {
        if (c != '0' && c != '5') {
          flag = false;
        }
      }
      if (flag) {
        answer.add(i);
      }
    }
    if (answer.isEmpty()) {
      answer.add(-1);
    }
    System.out.println(answer);
  }
}

프로그래머스 코드

import java.util.*;

class Solution {
    public List solution(int l, int r) {
        List<Integer> answer = new ArrayList<>();
        
        for (int i = l; i <= r; i++) {
            String s = i + "";
            boolean bool = true;
            for (char c : s.toCharArray()) {
                if (c != '0' && c != '5') {
                    bool = false;
                }
            }
            if (bool) {
                answer.add(i);
            }
        }
        if (answer.isEmpty()) {
            answer.add(-1);
        }
        
        return answer;
    }
}