programmers.co.kr/learn/courses/30/lessons/72410?language=java
1. 유형
문자열
2. 풀이
이 문제는 모듈화가 중요합니다. 그래야 나중에 실수했을 때, 디버깅이 편합니다.
각 단계별로 함수를 만들어서 시키는대로 구현합니다.
딱히, 특별한 구현법이 없는거 같습니다.
문자열을 수정하기 편하게 ArrayList 자료구조를 사용하고, 끝 부분부터 탐색하며 remove를 해줬습니다.
3. 디버깅 실수
case4부분에서 index 에러가 생겼습니다. 문자열 길이가 0인경우 예외처리 실수가 있었습니다.
4. 풀이
import java.util.ArrayList;
class Solution {
static String new_id;
static ArrayList<Character> str;
static String res;
static void case1() {
int size = str.size();
for (int i = size - 1; i >= 0; i--) {
if (str.get(i) >= 'A' && str.get(i) <= 'Z') {
char c = (char) (str.get(i) + 32);
str.remove(i);
str.add(i, c);
}
}
}
static void case2() {
int size = str.size();
for (int i = size - 1; i >= 0; i--) {
char c = str.get(i);
if ((c >= 'a' && c <= 'z') || c == '-' || c == '_' || c == '.' || (c >= '0' && c <= '9')) {
continue;
} else {
str.remove(i);
}
}
}
static void case3() {
int size = str.size();
for (int i = size - 1; i >= 1; i--) {
char a = str.get(i);
char b = str.get(i - 1);
if (a == '.' && b == '.') {
str.remove(i);
}
}
}
static void case4() {
int size = str.size();
if (size > 0) {
char a = str.get(size - 1);
if (a == '.')
str.remove(size - 1);
}
size = str.size();
if (size > 0) {
char b = str.get(0);
if (b == '.')
str.remove(0);
}
}
static void case5() {
int size = str.size();
if (size == 0)
str.add('a');
}
static void case6() {
int size = str.size();
if (size >= 16) {
for (int i = size - 1; i > 14; i--) {
str.remove(i);
}
}
case4();
}
static void case7() {
int size = str.size();
char last_char = str.get(size - 1);
if (size <= 2) {
for (int i = 0; i < 3 - size; i++) {
str.add(last_char);
}
}
}
static void print(){
res ="";
for (char c : str) {
res+=c;
}
}
public String solution(String new_id) {
String answer = "";
str = new ArrayList<>();
for (int i = 0; i < new_id.length(); i++) {
str.add(new_id.charAt(i));
}
case1();
case2();
case3();
case4();
case5();
case6();
case7();
print();
return res;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level2 - 가장 큰 수 (0) | 2021.03.23 |
---|---|
프로그래머스 level2 - 위장 (0) | 2021.03.23 |
프로그래머스 level2 - 소수 찾기 (0) | 2020.04.06 |
프로그래머스 level2 - 프린터 (0) | 2020.04.05 |
2017 카카오코드 본선 - 단체사진 찍기 (0) | 2020.04.04 |