프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제
문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건
- n은 길이 10,000이하인 자연수입니다.
입출력 예
| n | return |
| 3 | "수박수" |
| 4 | "수박수박" |
제출한 코드
class Solution {
public String solution(int n) {
StringBuilder sb = new StringBuilder();
int len = n / 2;
for (int i = 0; i < len; i++) sb.append("수박");
if (n % 2 != 0) sb.append("수");
return sb.toString();
}
}
풀이
문제를 처음 보고 "수박"이 반복된다고 생각했다. 문자열을 이어 붙이기 위해 StringBuilder를 사용했다.
n이 짝수일 경우에는 "수박"을 n / 2 만큼 StringBuilder에 append 하고
n이 홀수일 경우에도 마찬가지로 "수박"을 n / 2(나머지 버림)만큼 StringBuilder에 append 한 후, 맨마지막에 "수"를 한 번 붙여주어서 코드를 완성시켰다.
마지막에 StringBuilder를 toString() 메서드를 사용해서 String 타입으로 변환해준 후 return 하면 끝!
처음에는 아래와 같이 코드를 작성했었는데, 채점할 때 틀린 답으로 간주되었다.
class Solution {
public String solution(int n) {
String s = "수박";
StringBuilder sb = new StringBuilder();
int len = n / 2;
if (len % 2 == 0) for (int i = 0; i < len; i++) sb.append(s);
else {
for (int i = 0; i < len; i++) sb.append(s);
sb.append("수");
}
return sb.toString();
}
}
알고 보니 n을 기준으로 생각했어야 했는데, n / 2는 홀짝에 관계없이 무조건 해야 되네? 반복되는구나 len이라는 변수로 처리하자! 라는 생각에 len의 기준으로 If-else를 나눴던 게 오류를 야기했다.
예를 들어 n의 값이 1일 경우에는 len = 0 이 되어서 아무런 값도 출력되지 않을 것이다.
If문에 n이 홀짝인지에 대한 여부를 묻는 코드로 변경했더니 오류 없이 잘 채점되었다.
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] 12918번 - 문자열 다루기 기본 [Java] (0) | 2026.04.15 |
|---|---|
| [프로그래머스] 82612번 - 부족한 금액 계산하기 [Java] (0) | 2026.04.14 |
| [프로그래머스] 12917번 - 문자열 내림차순으로 배치하기 [Java] (0) | 2026.04.13 |
| [프로그래머스] 70128번 - 내적 [Java] (0) | 2026.04.10 |
| [프로그래머스] 77884번 - 약수의 개수와 덧셈 [Java] (0) | 2026.04.10 |
