728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/155652
생각
- 먼 지랄을 해도 안풀렸다.
- 어떻게든 점수를 받기 위해 구차해진 내 코드를 첨부한다.
코드
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
System.out.println(solution("aukks", "wbqd", 5));
System.out.println(solution("z", "abcdefghij", 20)); // n
}
public static String solution(String s, String skip, int index) {
String answer = "";
char [] arr = s.toCharArray();
for (int i = 0; i < arr.length; i++) {
char first_char = arr[i];
ArrayList<Character> hubo = new ArrayList<>();
for (int j = 1; j < 1000; j++) {
int i1 = (int) first_char + j;
if(i1>122) i1-=26;
if(skip.contains(""+(char)i1)) continue;
hubo.add((char)(i1));
}
answer += hubo.get(index-1);
}
return answer;
}
}
다른 사람 풀이
- 음.. 뭔가 쉽게 풀긴했는데,, j-- 를 한 이유를 모르겠다.
- 디버깅을 해보니 알겠다. first_char 는 계속 a-z를 순회하면서 도는거고, j 가 20에 도달하지 않으면 계속 무한루프를 돈다고 생각하니 이해가 됐다.
public class Main {
public static void main(String[] args) {
System.out.println(solution("aukks", "wbqd", 5));
System.out.println(solution("z", "abcdefghij", 20)); // n
}
public static String solution(String s, String skip, int index) {
String answer = "";
for (int i = 0; i < s.length(); i++) {
char first_char = s.charAt(i);
for (int j = 0; j < index; j++) {
first_char+=1;
if(first_char>'z') first_char -=26;
if(skip.contains(String.valueOf(first_char))) j--;
}
answer += first_char;
}
return answer;
}
}
- 갈끔한 코드가 있어서 하나 더 첨부한다.
public class Main {
public static void main(String[] args) {
// System.out.println(solution("aukks", "wbqd", 5));
System.out.println(solution("z", "abcdefghij", 20)); // n
}
public static String solution(String s, String skip, int index) {
StringBuilder answer = new StringBuilder();
for (char letter : s.toCharArray()) {
char temp = letter;
int idx = 0;
while (idx < index) {
temp = temp == 'z' ? 'a' : (char) (temp + 1);
if (!skip.contains(String.valueOf(temp))) {
idx += 1;
}
}
answer.append(temp);
}
return answer.toString();
}
}
728x90
반응형
'Dev > Algorithm' 카테고리의 다른 글
[프로그래머스] 크기가 작은 부분 문자열 - Java (0) | 2024.05.21 |
---|---|
[프로그래머스] 문자열 나누기 - Java (0) | 2024.05.21 |
[프로그래머스] 대충 만든 자판 - Java (0) | 2024.05.20 |
[프로그래머스] 덧칠하기 - Java (0) | 2024.05.20 |
[프로그래머스] 바탕화면 정리 - Java (0) | 2024.05.20 |