728x90
코드 힌트
이 문제를 해결하기 위해 다음 단계를 고려하세요:
- 문자 선택의 시작점: 주어진 c 값은 문자열에서 문자를 선택하기 시작할 위치를 나타냅니다. 그러나 이 값은 1부터 시작하므로, 0부터 시작하는 인덱스에 맞추기 위해 c-1로 조정합니다.
- 문자 간격: m은 선택할 문자 간격을 나타냅니다. 예를 들어, m이 3이면, 매 3번째 문자를 선택합니다.
- 문자 선택: 문자열의 인덱스를 사용하여 c-1부터 시작하여 m 간격으로 문자를 선택합니다.
- 문자 추가: 선택된 문자를 결과 문자열에 추가합니다. 반복문을 사용하여 끝까지 진행합니다.
m과 c에 대한 수학적 힌트
- m: 선택할 문자의 간격을 나타냅니다. 예를 들어, m이 4이면, 문자열에서 매 4번째 문자를 선택합니다. 따라서, 선택할 문자의 인덱스는 c-1부터 시작하여 i += m을 통해 i를 업데이트합니다.
- c: 선택을 시작할 문자열의 위치를 나타냅니다. c는 1부터 시작하므로, 배열의 인덱스에 맞추기 위해 c-1을 사용합니다. 예를 들어, c가 2이면, 문자열의 두 번째 문자부터 선택을 시작합니다.
예시
- 문자열: "abcdefghij"
- m: 3 (매 3번째 문자 선택)
- c: 2 (2번째 문자부터 시작, 0 기반 인덱스는 1)
단계별 설명:
- 시작점: c - 1 = 2 - 1 = 1 (인덱스 1)
- 문자열에서 인덱스 1부터 시작하여 m = 3 간격으로 문자 선택
인덱스: 0 1 2 3 4 5 6 7 8 9
문자: a b c d e f g h i j
선택: x x x
결과: "beh"
StringBuilder 사용 시 장점
- 문자열 결합의 효율성: Java에서 문자열 결합을 + 연산자로 수행하면 매번 새로운 문자열 객체를 생성하게 되어 메모리와 시간 측면에서 비효율적입니다. 반면 StringBuilder는 내부적으로 가변 버퍼를 사용하여 문자열을 효율적으로 조작할 수 있습니다. StringBuilder를 사용하면 반복적으로 문자열을 추가할 때 성능이 향상됩니다.
- 성능 개선: StringBuilder는 문자열이 변경될 때마다 새로운 객체를 생성하는 대신, 기존 버퍼를 수정하므로 더 나은 성능을 제공합니다. 특히, 문자열이 길어지거나 반복적으로 결합할 때 이점이 큽니다.
String 사용
StringBuilder 사용
정답은 더보기 클릭
더보기
class Solution {
public String solution(String my_string, int m, int c) {
String result = ""; // 결과 문자열을 저장할 변수
// c-1부터 시작하여 m 간격으로 반복문을 수행
for (int i = c-1; i < my_string.length(); i += m) {
result += my_string.charAt(i); // 문자열에서 해당 인덱스의 문자 추가
}
return result; // 결과 문자열 반환
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 문자 개수 세기 (0) | 2024.08.02 |
---|---|
[프로그래머스] qr code (0) | 2024.08.02 |
[프로그래머스] 7의 개수 (0) | 2024.08.02 |
[프로그래머스] 2차원으로 만들기 (0) | 2024.08.02 |
[프로그래머스] 배열 만들기 5 (0) | 2024.08.01 |