https://school.programmers.co.kr/learn/courses/30/lessons/181921
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
import java.util.*;
class Solution {
public boolean check5N0(String s){
String[] ls = s.split("");
for(String ss : ls){
if(!(ss.equals("5") || ss.equals("0")))
return false;
}
return true;
}
public List solution(int l, int r) {
ArrayList<Integer> ans = new ArrayList<>();
for(;l<=r;l++){
if(l%5 == 0){
String s = String.valueOf(l);
if(check5N0(s))
ans.add(l);
}
}
if(ans.isEmpty())
ans.add(-1);
return ans;
}
}
0과 5로 이루어지고 오름차순 정렬을 하면
1 10 11 100 101 111 ... 에 5를 곱한것과 결과 같다는 패턴과
Integer.toBinaryString(2진수 스트링의 형태로 표현할 int 값)을 활용해서
다시 푼 코드
import java.util.*;
class Solution {
public List solution(int l, int r) {
ArrayList<Integer> ans = new ArrayList<>();
//결과는 1 10 11 100 101 110 ... 이진법으로 1 2 3 4 5 표현한것과 같음
// 1 000 000 은 이진법으로 2의 6승 64임
// Integer.toBinaryString 활용
for(int i = 1; i<=64; i++){
int n = Integer.parseInt(Integer.toBinaryString(i))*5;
if(l<=n && n<=r)
ans.add(n);
if(n>r)
break;
}
if(ans.isEmpty())
ans.add(-1);
return ans;
}
}
'알고리즘' 카테고리의 다른 글
String 과 StringBuilder 성능차이 (0) | 2024.06.11 |
---|---|
deque의 활용 (0) | 2024.06.11 |
나선형 보드 (0) | 2024.06.09 |
Character uppercase 사용법 (0) | 2024.06.08 |
원하는 문자열 찾기 (0) | 2024.06.08 |