==============해답==================
package com.codestates.coplit;
import java.util.*;
public class Solution {
public String insertDash(String str) {
// TODO:
/*
문자열 입력받아 연속된 한자리 홀수 숫자 사이에 '-' 추가한 문자열 리턴.
<주의사항>
1. 0은 짝수
<풀이>
1. str을 기반으로 StringBuilder로 만든다.
2. 연속된 홀수 숫자를 찾는다.
홀수 다음 홀수i, i+1
*/
if(str.length() == 0) {
return null;
}
String result = "" + str.charAt(0);
// 연속된 홀수 사이에 넣는거라 첫 숫자에 -를 넣을리는 없으니 0번 인덱스를 따로 뺀다.
for(int i = 1; i < str.length(); i++) {
// str.charAt(0)은 따로 빼두었으니 i=1 부터 시작.
if(str.charAt(i-1) %2 != 0 && str.charAt(i) % 2 != 0) {
result = result + "-";
// if문 안의 내용이 참일 경우 result = result + "-" 라고 되어 있는데
// 어째서 str.charAt(i-1)이 result에 추가되는지 이해가 안가서 문의 드린 상태.
}
result = result + str.charAt(i);
}
return result;
}
}
=================================update 12/04/2022========================
String result = "" + str.charAt(0);
// 연속된 홀수 사이에 넣는거라 첫 숫자에 -를 넣을리는 없으니 0번 인덱스를 따로 뺀다.
for(int i = 1; i < str.length(); i++) {
// str.charAt(0)은 따로 빼두었으니 i=1 부터 시작.
if(str.charAt(i-1) %2 != 0 && str.charAt(i) % 2 != 0) {
result = result + "-";
// if문 안의 내용이 참일 경우 result에 "-" 추가.
}
result = result + str.charAt(i);
// 기본적으로 result는 str.charAt(i)가 계속 추가되는 상황.
}
return result;
===========================해석===========================================
처음에 str을 char[] 로 변경하여 인덱스 별로 계산하여 연속 홀수가 발견되면 i+1 자리에 -를 넣으려고 했으나,
한번 - 를 넣고나면 자리수가 하나씩 밀려난다는걸 인지하지 못하여 실패.
reference 답으로 봐서는 str을 char[] 으로 변경하지않고 str.charAt(i) 메소드를 활용해서 str의 각 자리수로 계산을 했다.
문제에서는 연속된 홀수일 경우 사이에 - 를 추가하는거니 0번째부터 -가 추가될 일은 없으므로
String result에 str.charAt(0)과 ""를 넣어서 선언하고, i, i+1 로 계산하는게 아닌 i-1, i 로 인덱스를 조건으로 진행했다.
0번 인덱스를 result에 선언했기에 i=1 부터 시작해서 0번째 인덱스를 계산하려면 i-1, i 로 해야해서 그런것 같다.
조건문 안의 내용이 false인 경우 result = result + str.charAt(i)로 계속 쌓아나가도록하고
if문으로 만약 연속된 홀수가 확인되면 result = result + "-"; 로 -를 추가하는 식으로 문제를 해결했다.
'알고리즘 문제 풀이' 카테고리의 다른 글
Q15. modulo // 성공 // int 타입 or long 타입 (0) | 2022.12.08 |
---|---|
Q14. superIncreasing // 1시간 안에 성공! (0) | 2022.12.07 |
Q9. ABcheck // for문에서 중복되는 조건이 있을 경우 주의사항 ** (0) | 2022.11.29 |
<알고리즘 Q3 - 구현> 보드 게임 // equals() vs == (0) | 2022.11.28 |
<알고리즘 Q2 - Greedy> 편의점 알바 // 노가다성 && 배열 (0) | 2022.11.27 |