Level 2 코딩 문제풀이 - 짝수번째 숫자 치환 & 배수 특정 숫자 찾기

728x90

짝수번째 숫자만 치환

문제:

모든 짝수번째 숫자를 * 로 치환하시오.(홀수번째 숫자,또는 짝수번째 문자를 치환하면 안됩니다.)
Example: a1b2cde3~g45hi6 → a*b*cde*~g4*hi6

 

순서:

  1. 일반 String연산이 아니라 StringBuilder를 사용하여 메모리 할당을 최소화
  2. for문에서 charAt으로 문자를 하나씩 가져와서
  3. 두번째 문자 그리고 그 문자가 숫자일 경우 *을 대신 삽입
  4. 아닐 경우 본래의 문자열 삽입

출력문:

a*b*cde*~g4*hi6

public class EvenNChange {
	public static void main(String[] args) {
		StringBuilder result = new StringBuilder();
		String ex = "a1b2cde3~g45hi6";
		for(int i = 0; i<ex.length(); i++) {
			if(i%2 !=0 && ('0'<= ex.charAt(i) && ex.charAt(i) <= '9')) {
//				매 2번째 문자 그리고 그 문자가 숫자일 경우 *을 대신 삽입
				result.append('*');
			}
			else {
				result.append(ex.charAt(i));
//				조건에 부합하지 않을경우 본래의 문자 삽입
			}
		}
		System.out.println(result);
	}
}

임의 숫자 배수 중 전부 1이 나오는 배수 값 자리수 구하기

문제:

2나 5로 나눌 수 없는 0 이상 10,000 이하의 정수 n이 주어졌는데, n의 배수 중에는 10진수로 표기했을 때

모든 자리 숫자가 1인 것이 있다.
그러한 n의 배수 중에서 가장 작은 것은 몇 자리 수일까?
 = 말인 즉슨 3의 37배수는 111이므로 자리수가 3자리 

 

순서:

  1. for문 무한반복문을 이용해 입력받은 input의 배수를 구한 후
  2. 그 배수를 String 값으로 변환
  3. String값을 charAt으로 1이 맞는지 일일이 확인한 후에 맞으면 count의 변수값을 누적합
  4.  누적합의 값이 String의 길이값과 동일할 경우 전부다 1이라는 의미이므로
  5. 그 결과값을 출력하고 프로그램 종료

 

출력문:

2와 5의 배수를 제외한 숫자를 입력하세요
13
값: 111111
값의 자리수: 6

public class Number111Counting {
	public static void main(String[] args) {
		int input = 0;
		Scanner scanner = new Scanner(System.in);
		
		while(input==0) {
		try {
			System.out.println("2와 5의 배수를 제외한 숫자를 입력하세요");
			input = scanner.nextInt();
			if(input%2 == 0 || input%5 == 0) {
				throw new notvalidNumberException();
			}
			else if(input>10000) {
				throw new Exception();
			}
		}
//		======== 오류 처리 구문 ========
//		그냥 2와 5의 배수가 아니거나 10,000이 넘으면 Exception으로 반복문 재반복
		catch (notvalidNumberException e) {
			System.out.println("2와 5의 배수를 입력하지마세요.");
			input = 0;
			continue;
			}
		catch (Exception e) {
			System.out.println("10,000이상의 수를 입력하지마세요.");
			input = 0;
			continue;
			}
		} 
//		======== 오류 처리 구문 ========
		
//		======== 실제 코드 작성 구문 ========
		for(int i = 1 ;; i++) {
			StringBuilder tmp = new StringBuilder();
			tmp.append(i*input);
//			받은 input의 값을 배수로 구한 후에 String값으로 변환
			int count = 0;
			for(int j = 0; j<tmp.length(); j++) {
//				String값의 문자열 길이만큼 charAt으로 1이 맞는지 하나씩 비교
				if(tmp.charAt(j) =='1') {
					count++;
//					맞으면 count에 누적합
					}
				}
			if(count == tmp.length()) {
//				구한 count값이 배수의 길이와 동일하면 전부다 1이라는 의미이므로 아래에 그 결과값 도출
				System.out.println("값: " + tmp);
				System.out.println("값의 자리수: " + tmp.length());
				break;
			}
		}
//		======== 실제 코드 작성 구문 ========
	}
}
class notvalidNumberException extends RuntimeException{
	}

 

 

728x90