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 | 31 |
Tags
- 프레임워크
- 그리디
- ES
- 애자일프로그래밍
- 애자일
- 클린코드
- Elasticsearch
- 애자일기법
- 코드
- framework
- 알고리즘
- 개발
- Java
- JPA
- 데이터베이스
- 코딩테스트
- 코딩
- 읽기쉬운코드
- database
- 자바
- 그리디알고리즘
- 개발자
- 스프링
- cleancode
- spring boot
- API
- Baekjoon
- Spring
- 엘라스틱서치
- 백준
Archives
- Today
- Total
튼튼발자 개발 성장기🏋️
[1343번] 폴리오미노 본문
반응형
문제 기출 : [https://www.acmicpc.net/problem/1343]
풀이 방법
[그리디알고리즘] 접근 받은 문자열에서 사전식 정렬을 위해 "AAAA"부터 replace를 한 다음 "BB"로 replace를한다. 만약 "X"가 남아있다면 불가능 하므로 -1 출력, "X"가 없다면 정답이 될 것이다. 아주아주아주 허무할 정도로 간단하다...
나는 무려 3시간 가량을 낭비했다... 다음과 같은 헛짓거리(?)를 할 수 있는 문제. 1. 사전식 정렬이 필요할 것 같아 보임 2. 4의 배수와 2의 배수를 생각할 수도 있음 3. 홀수와 짝수를 나눌 생각을 할 수 있음 4. "."을 기준으로 나열된 X에 대해 탐색할 가능성이 있음 5. etc
심지어 엄청난 런타임 에러때문에 식은땀을 흘렸다... 그러나 아직도 왜 런타임 에러가 뿜뿜했는지 정말 모르겠다.....ㅠㅠ |
문제 풀이
public class Main {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String answer = "";
try {
String board = br.readLine();
board = board.replaceAll("XXXX", "AAAA");
board = board.replaceAll("XX", "BB");
if(board.indexOf("X") > -1) {
System.out.println(-1);
} else {
System.out.println(board);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
헛짓거리한 코드와 런타임 에러로 식은 땀을 냈던 풀이
public class Main {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String answer = "";
try {
String board = br.readLine();
// 바로 헛짓거리 시작
String[] XBundle = board.split("\\.");
int i = 0;
// 헛짓거리의 정점
for (i = 0; i < XBundle.length; i++) {
if(XBundle[i].isEmpty()) {
XBundle[i] = ".";
} else {
if(XBundle[i].length() % 2 == 1) {
System.out.println(-1);
return;
}
XBundle[i] = XBundle[i].replaceAll("XXXX", "AAAA");
XBundle[i] = XBundle[i].replaceAll("XX", "BB");
XBundle[i] = XBundle[i].concat(".");
}
}
i--;
XBundle[i] = XBundle[i].substring(0, XBundle[i].length()-1);
for (String str : XBundle) {
answer = answer.concat(str);
}
for (i = board.length() - 1; i >= 0; i--) {
if(board.charAt(i) == '.') {
answer = answer.concat(".");
} else {
return;
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println(answer); // 이녀석을 실행하면 런타임 에러...
// 오죽하면 finally 구문에다가 빼기 까지 했겠나 싶다...ㅠㅠ
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
반응형
'Business logic > 백준' 카테고리의 다른 글
[2828번] 사과 담기 게임 (0) | 2020.04.23 |
---|---|
[2875번] 대회 or 인턴 (0) | 2020.04.23 |
[1543번] 문서검색 (0) | 2020.04.19 |
[2437번] 저울 (0) | 2020.04.19 |
[2529번] 부등호 (0) | 2020.04.16 |