반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 다이나믹 프로그래밍
- 스택
- 실패함수
- 구현
- LeetCode 83 c언어
- 조합론
- 수학
- 문자열
- 연결리스트 중복제거
- 이분 탐색
- LeetCode 83번
- 임의 정밀도 / 큰 수 연산
- 큐
- 프로그래머스
- 정수론
- 사칙연산
- 재귀
- Queue
- 시뮬레이션
- 별 찍기
- 해시를 사용한 집합과 맵
- 브루트포스 알고리즘
- 연결리스트 정렬
- 자료 구조
- 큰 수 연산
- 문자열제곱
- 유클리드 호제법
- 정렬
- LeetCode Remove Duplicates from Sorted List in c
- KMP알고리즘
Archives
- Today
- Total
hahn
[백준 - JAVA] 4와 7 본문
728x90
반응형
더보기
import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int input = sc.nextInt(),
originPardon = 2;
String str = "", str1;
while(input > 0) {
input -= originPardon;
originPardon *= 2;
str += "4";
}
str1 = Integer.toBinaryString(input + originPardon/2 - 1);
for(int i = 0; i < str.length(); i++) {
if(str.length() - i <= str1.length()) {
if(str1.charAt(str1.length() - str.length() + i) == '1') {
System.out.print("7");
continue;
}
}
System.out.print("4");
}
}
}
어떻게 할까 고민하다가
일단 조건문의 범위를 최대한 줄여보고자
초기 값을 만들고 4와 7로 바꿔보자고 생각했다.
초기 값을 만들었으니 이제 남는 값을 어떻게 처리할까 고민했는데
각 항은 4와 7로 이루어져 있으니
경우의 수를 생각해봤을 때,
그냥 2진수로 변환해서 1일 때는 7 0일 때는 4로 치환해주면 되겠다고
생각했다. 그렇게 코드를 짜 봤더니 성공했다.
블로그 작성하면서 생각해보니까
굳이 초기값 같은 거 안 잡아줘도
입력 값 2진수로 변환해서 해결해도 될 거 같다.
또한 charAt 비교 안 해도 replace로
0을 4로 1을 7로 바꿔도 될 듯??
728x90
반응형
'코딩테스트 연습 > 백준(JAVA)' 카테고리의 다른 글
[백준 - JAVA] 거듭제곱 (0) | 2021.09.19 |
---|---|
[백준 - JAVA] 걷다보니 신천역 삼 (Small) (0) | 2021.09.19 |
[백준 - JAVA] 최대 곱 (0) | 2021.09.19 |
[백준 - JAVA] 최소공배수 (0) | 2021.09.19 |
[백준 - JAVA] 조합 (0) | 2021.09.19 |