겹치는 숫자 제거 & OX 프린트 & 버전 크기 비교 - 코딩 문제 풀이

728x90

겹치는 숫자 제거 문제 

0-9부터 입력 시 겹치는 숫자가 있으면 false, 없으면 true 반환

  1. 일단 string 배열을 scanner로 입력받아서 .split("")으로 개별로 분할한다
  2. 받은 문자열을 Arrays.sort()를 사용하여 오름차순으로 정렬
  3. 오름차순으로 정렬된 문자열(숫자)를 1번째와 2번째를 비교하여 만약 같다면 겹치는 문자열이 있다는 뜻
  4. 따라서 겹치는 문자가 있다면 false를 출력 후 시스템을 종료
  5. 겹치는 문자가 없다면 반복문을 탈출하여 true 출력
package CodingTestLv1;

import java.util.Arrays;
import java.util.Scanner;

public class Z_TestforRename2 {
	public static void main(String[] args) {
		
		Scanner scanner = new Scanner(System.in);
		System.out.println("0-9입력");
		String [] input = scanner.nextLine().split(""); //split 함수로 사이에 간격을 둠
		int sum = 0; 
		Arrays.sort(input); //문자열을 오름차순으로 정렬
			for(int i = 1; i<input.length; i++) {
				if(input[i-1].equals(input[i])){ //정렬한 전의 값과 다음 값이 같으면 false
					System.out.println(false);
					System.exit(i); //조건이 맞으면 시스템 종료
					}
				else {
					continue;
			}
		}
			System.out.println(true);
	}
}

OX 찍기

반복문을 사용하여 아래의 OX 배열 프린트하기

  1. 더블 for 문을 이용하여  O를 순차적으로 찍는다
  2. 그 다음 한개의 for문을 더 사용하여 X를 찍는데, 조건은 k가 i를 1번 반복했을 때 X를 1개만 쓰고 반복문이 끝나고 i가 2가 됬을 때 X 가 두개 써지는 식
  3. 반복문이 끝나고 빈print문으로 띄어쓰기를 넣어주면 끝
public class Z_TestforRename2 {
	public static void main(String[] args) {
//		OOOOOX
//		OOOOXX
//		OOOXXX
//		OXXXXX
//		XXXXXX
//		6*6 배열
		
		for(int i = 1; i<7; i++) { //1이 들어갈 때
			for(int j = 0; j<6-i; j++) { //5개의 O 가 찍히고
				System.out.print("O");
			}
			for(int k = 0; k<i; k++) { //1개의 X 찍힌 후에
				System.out.print("X");
			}
			System.out.println(); //반복문이 끝나고 띄어쓰기
		}
	}
}

버전 크기 비교

버전 비교의 예

* ' . '으로 구별되어 있음 *
0.0.2 > 0.0.1
1.0.10 > 1.0.3

  1. 메서드 사용 간편화
  2. String 값을 불러와서 replace로 ' . '을 제거
  3. 제거된 값을 Integer.parseInt로 int로 변환
  4. .이 제거된 값의 길이를 비교해서 다르다면 다른만큼의 10의 자리를 Math.pow()를 사용해 거듭제곱을 함
  5. 길이가 같아진 수열을 크기 비교를 하여 if 문으로 출력 
	public static void main(String[] args) {
		test("2.1.2.1", "2.1");
	}
	public static void test(String a, String b) {
		String replaceda=a.replace(".", ""); //.이 없는 String 값
		int ia = Integer.parseInt(replaceda); //String 숫자배열을 int값으로 변환
		String replacedb=b.replace(".", "");
		int ib = Integer.parseInt(replacedb);
		
		if(a.length()>b.length()) { //두개의 길이가 같지 않을 때 길이를 맞추기 위해 10의 거듭제곱 곱함
			ib = ib * (int)Math.pow(10,replaceda.length()-replacedb.length());
		}
		else {
			ia = ia * (int)Math.pow(10,replacedb.length()-replaceda.length());
		}
		if(ib>ia) // 같은 수열의 길이에서 큰 값을 부등호를 이용해 출력
			System.out.println(a + " < " + b);
		else if (ib<ia)
			System.out.println(a + " > " + b);
		else
			System.out.println(a + " = " + b);
	}
}
728x90