반응형

 

문제 링크 : https://www.acmicpc.net/problem/1526

 

1526번: 가장 큰 금민수 (브론즈1, 수학, 구현, 브루트포스 알고리즘, JAVA)

수를 하나 입력받고, 4와 7로만 이루어진 숫자의 최댓값을 구하는 문제입니다. 전체 코드는 아래와 같은데, 값을 입력받은 후 해당 숫자를 char 배열로 변환합니다.

이후 각각의 char 배열에 7또는 4가 있는지 확인하고 count를 증가시키게 되는데, count가 char 배열의 길이와 같을 경우 모든 값이 4또는 7로 이루어진 문자이기 때문에 출력 후 종료합니다.

만약, 같지 않다면 입력받은 값(N)에서 1씩 감소시키며 원하는 값을 찾을때까지 반복합니다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

   public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        while(true) {
           char[] ch = Integer.toString(N).toCharArray();
           int count = 0;
           for(int i=0; i<ch.length; i++) {
              if(ch[i] == '7') {
                 count++;
              } else if(ch[i] == '4') {
                 count++;
              }
           }
           
           if(count == ch.length) {
              System.out.println(N);
              break;
           }
           
           N--;
        }
   }
}

 

반응형

+ Recent posts