반응형
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
- KMP알고리즘
- 정렬
- 큰 수 연산
- 프로그래머스
- 별 찍기
- 스택
- 이분 탐색
- 큐
- 연결리스트 정렬
- LeetCode 83번
- 유클리드 호제법
- 문자열제곱
- 자료 구조
- 문자열
- 구현
- LeetCode 83 c언어
- 연결리스트 중복제거
- 실패함수
- 재귀
- 다이나믹 프로그래밍
- 임의 정밀도 / 큰 수 연산
- 수학
- 정수론
- 브루트포스 알고리즘
- 시뮬레이션
- 해시를 사용한 집합과 맵
- 조합론
- Queue
- LeetCode Remove Duplicates from Sorted List in c
- 사칙연산
Archives
- Today
- Total
hahn
[백준 - JAVA] 명령 프롬프트 본문
728x90
반응형
http://boj.kr/6d921a9602844c4da6414aaef93a3a3e
더보기
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int input = sc.nextInt(),
whileCondition = 0, subString;
String[] strArr = new String[input];
String result, compare = null;
boolean pardon;
char pardonChar;
for(int i = 0; i < input; i++) {
strArr[i] = sc.next();
}
subString = strArr[0].length();
while(whileCondition != input) {
whileCondition = 0;
compare = strArr[0].substring(0, subString--);
for(int i = 0; i < strArr.length; i++) {
if(strArr[i].indexOf(compare) == 0) whileCondition++;
}
}
for(int i = subString + 1; i < strArr[0].length(); i++) {
pardon = true;
pardonChar = strArr[0].charAt(i);
for(int j = 0; j < strArr.length; j++) {
if(pardonChar != strArr[j].charAt(i)) pardon = false;
}
if(pardon) {
compare += pardonChar;
}else {
compare += "?";
}
}
System.out.println(compare);
}
}
입력 문자열의 길이는 모두 똑같으니까
다른 거 고려할 거 없이 처음 입력받는 문자 기준으로
뒤에서부터 잘라서 비교했다.
비교는 indexOf를 사용했는데
자른 문자열 전체가 다른 문자열에 속하면서
문자열의 시작부터 일치해야 하므로
0과 같다면으로 조건 처리했다.
처음 실패한 거는 중간만 ?가 들어가는 상황을 고려하지 않았기 때문이다.
뒤에 새로 for문 추가해서 해결했는데
저렇게 비교할 거면 indexOf 안 써도 되는데
시간은 어떤 게 더 빠른지 모르겠다.
++ 작성하면서 생각해본 거 해봤다.
더보기
import java.util.Scanner;
class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
String[] strArr = new String[input];
String result = "";
boolean pardon;
char pardonChar;
for(int i = 0; i < input; i++) {
strArr[i] = sc.next();
}
for(int i = 0; i < strArr[0].length(); i++) {
pardon = true;
pardonChar = strArr[0].charAt(i);
for(int j = 0; j < strArr.length; j++) {
if(pardonChar != strArr[j].charAt(i)) pardon = false;
}
if(pardon) {
result += pardonChar;
}else {
result += "?";
}
}
System.out.println(result);
}
}
코드 자체는 얘가 더 깔끔한 듯하다.
728x90
반응형
'코딩테스트 연습 > 백준(JAVA)' 카테고리의 다른 글
[백준 - JAVA] 저항 (0) | 2021.09.14 |
---|---|
[백준 - JAVA] 나누기 (0) | 2021.09.14 |
단계별로 풀어보기(정수론 및 조합론 - 다리 놓기) (0) | 2021.09.14 |
[백준 - JAVA] 분산처리 (0) | 2021.09.14 |
[백준 - JAVA] 막대기 (0) | 2021.09.14 |