본문 바로가기
개발로그/알고리즘

프로그래머스 Lv.0 배열 만들기 2

by 쩜징 2023. 7. 31.

프로그래머스 Lv.0 배열 만들기 2


문제 설명

정수 l과 r이 주어졌을 때,

l이상 r이하의 정수 중에서 

숫자 "0"과 "5"로만 이루어진 모든 정수

오름차순으로 저장한 배열을 return하라.

 

1 ≤ l ≤ r ≤ 1,000,000

 

l r result
5 555 [5, 50, 55, 500, 505, 550, 555]
10 20 [-1]

** 풀이 방법

 

l부터 r까지의 반복문을 돌리고,

정수를 문자열로 반환한다.

for (int i=l; i<=r; i++) {
    String s = Integer.toString(i);
....
}

 

이중 반복문으로

문자열로 변환한 정수의 길이만큼 반복해서

각 자리수에 0과 5가 있는지 판별해야 한다.

0과 5가 둘 다 없다면

flag를 true로 저장해서 반복문을 빠져나온다.

flag가 false일때만 answer에 i를 저장시킨다.

for (int i=l; i<=r; i++) {
    String s = Integer.toString(i);
    boolean flag = false;
    for (int j=0; j<s.length(); j++) {
        if (s.charAt(j) != '5' && s.charAt(j) != '0') {
            flag = true;
            break;
        }
    } 
    if (!flag) answer.add(i);

}

 

만약 5와 0으로 된 숫자가 없다면

-1을 저장한다.

if (answer.size()==0) answer.add(-1);

 

<> 전체 코드 </>

import java.util.*;
class Solution {
    public List<Integer> solution(int l, int r) {
        List<Integer> answer = new ArrayList<>();
        for (int i=l; i<=r; i++) {
            String s = Integer.toString(i);
            boolean flag = false;
            for (int j=0; j<s.length(); j++) {
                if (s.charAt(j) != '5' && s.charAt(j) != '0') {
                    flag = true;
                    break;
                }
            } 
            if (!flag) answer.add(i);
            
        }
        if (answer.size()==0) answer.add(-1);
        return answer;
    }
}

반응형

댓글