반응형
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 |
Tags
- 자료 구조
- 브루트포스 알고리즘
- LeetCode 83번
- 사칙연산
- 시뮬레이션
- 유클리드 호제법
- LeetCode Remove Duplicates from Sorted List in c
- 조합론
- KMP알고리즘
- 다이나믹 프로그래밍
- 구현
- 프로그래머스
- 큰 수 연산
- LeetCode 83 c언어
- 큐
- 재귀
- 정렬
- 수학
- Queue
- 연결리스트 중복제거
- 임의 정밀도 / 큰 수 연산
- 해시를 사용한 집합과 맵
- 정수론
- 문자열
- 이분 탐색
- 스택
- 연결리스트 정렬
- 문자열제곱
- 실패함수
- 별 찍기
Archives
- Today
- Total
hahn
[백준 - JAVA] 명령 프롬프트 본문
728x90
반응형
1032번: 명령 프롬프트
첫째 줄에 파일 이름의 개수 N이 주어진다. 둘째 줄부터 N개의 줄에는 파일 이름이 주어진다. N은 50보다 작거나 같은 자연수이고 파일 이름의 길이는 모두 같고 길이는 최대 50이다. 파일이름은
www.acmicpc.net
http://boj.kr/6d921a9602844c4da6414aaef93a3a3e
공유 소스 보기
www.acmicpc.net
더보기
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 |