원본 : https://school.programmers.co.kr/learn/courses/30/lessons/77885
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
import java.util.*;
class Solution {
public long[] solution(long[] numbers) {
long[] answer = new long[numbers.length];
int idx = 0;
for (long num : numbers) {
if (num < 3) {
answer[idx++] = num + 1;
} else {
String num2 = get10to2(num);
StringBuilder right = new StringBuilder(num2.substring(num2.indexOf("1") + 1));
String result;
if (right.indexOf("0") >= 0) {
int lastZeroIndex = right.lastIndexOf("0");
right.deleteCharAt(lastZeroIndex);
right.insert(lastZeroIndex, "1");
if (lastZeroIndex != right.length() - 1) {
right.deleteCharAt(lastZeroIndex + 1);
right.insert(lastZeroIndex + 1, "0");
}
result = right.insert(0, "1").toString();
} else {
result = right.insert(0, "10").toString();
}
answer[idx++] = get2to10(result);
}
}
return answer;
}
public String get10to2(long num) {
StringBuilder sb = new StringBuilder();
while (num > 0) {
sb.append(num % 2);
num /= 2;
}
return sb.reverse().insert(0, 0).toString();
}
public long get2to10(String str) {
long[] arr = Arrays.stream(str.split("")).mapToLong(Long::parseLong).toArray();
long result = 0;
for (int i = arr.length - 1; i >= 0; i--) {
result += arr[i] * Math.pow(2, arr.length - 1 - i);
}
return result;
}
}
주식가격 (스택/큐) (0) | 2022.07.15 |
---|---|
삼각 달팽이 (월간 코드 챌린지 시즌1) (0) | 2022.07.15 |
[1차] 프렌즈4블록 (2018 KAKAO BLIND RECRUITMENT) (0) | 2022.07.15 |
피로도 (완전탐색) (0) | 2022.07.15 |
큰 수 만들기 (탐욕법(Greedy)) (0) | 2022.07.14 |
댓글 영역