반응형
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
- 시뮬레이션
- LeetCode 83 c언어
- 문자열
- 자료 구조
- 수학
- 조합론
- 별 찍기
- 실패함수
- 큐
- LeetCode 83번
- 다이나믹 프로그래밍
- LeetCode Remove Duplicates from Sorted List in c
- 재귀
- 문자열제곱
- 유클리드 호제법
- 구현
- 연결리스트 중복제거
- 연결리스트 정렬
- 정렬
- 해시를 사용한 집합과 맵
- Queue
- 임의 정밀도 / 큰 수 연산
- 스택
- 이분 탐색
- 프로그래머스
- 브루트포스 알고리즘
- 정수론
- 사칙연산
- 큰 수 연산
- KMP알고리즘
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 |