728x90
반응형
겹치는 숫자 제거 문제
0-9부터 입력 시 겹치는 숫자가 있으면 false, 없으면 true 반환
- 일단 string 배열을 scanner로 입력받아서 .split("")으로 개별로 분할한다
- 받은 문자열을 Arrays.sort()를 사용하여 오름차순으로 정렬
- 오름차순으로 정렬된 문자열(숫자)를 1번째와 2번째를 비교하여 만약 같다면 겹치는 문자열이 있다는 뜻
- 따라서 겹치는 문자가 있다면 false를 출력 후 시스템을 종료
- 겹치는 문자가 없다면 반복문을 탈출하여 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 배열 프린트하기
- 더블 for 문을 이용하여 O를 순차적으로 찍는다
- 그 다음 한개의 for문을 더 사용하여 X를 찍는데, 조건은 k가 i를 1번 반복했을 때 X를 1개만 쓰고 반복문이 끝나고 i가 2가 됬을 때 X 가 두개 써지는 식
- 반복문이 끝나고 빈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
- 메서드 사용 간편화
- String 값을 불러와서 replace로 ' . '을 제거
- 제거된 값을 Integer.parseInt로 int로 변환
- .이 제거된 값의 길이를 비교해서 다르다면 다른만큼의 10의 자리를 Math.pow()를 사용해 거듭제곱을 함
- 길이가 같아진 수열을 크기 비교를 하여 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
반응형
'알고리즘 풀이 > Java' 카테고리의 다른 글
Level 2 코딩 문제풀이 - 짝수번째 숫자 치환 & 배수 특정 숫자 찾기 (0) | 2022.02.15 |
---|---|
Level 2 코딩 문제풀이 - 다음 입사 문제, 숫자 사이클 길이 (0) | 2022.02.10 |
Level 2 코딩 문제풀이 - 구글입사문제, 하위 디렉토리 파일 찾기 (0) | 2022.02.09 |
피보나치 & 숫자곱셈 - 코딩 문제 풀이 (0) | 2022.01.27 |