문제

한글 코딩
홀수이면 수로 끝나게 출력
(n%2)만큼 수박 출력하고 + 수 한글자 추가
짝수이면 박으로 끝나게 출력
(n%2)만큼 수박 출력하고
int n = 11 일때,
(n%2) == 0이면 {
sout("수박")*2;
} 아니면 {
sout("수박")*2 + "수";
}
내가 작성한 코드
class Solution {
public static void main(String[] args) {
int n = 11;
String result = solution(n);
System.out.println(result);
}
public static String solution(int n) {
String answer = "";
if(n%2 != 0) {
for(int i = 1; i <= n/2; i++) {
answer += "수박";
}
answer += "수";
} else {
for(int i = 1; i <= n/2; i++) {
answer += "수박";
}
}
return answer;
}
고민했던 점
1. n값 대입
Scanner로 받게끔 해야하나 고민하다가 그냥 n = 11;로 초기화했다
2. 메서드 구현
보니까 solution이 n을 매개변수로 갖는 메서드이길래 메서드로 구현해서 main안에서 가져다쓰도록 구현함
3. 연산자 헷갈림
n을 나눠서 (% 사용) 나머지가 1일 경우에 “수”를 추가로 붙여야 하는데 /로 작성해서 에러가 났음. 연산자 구별 잘 하고 쓰기
4. 등호 생각 잘 하기
≤, <의 경우도 4/2 =2 의 경우 2까지 포함해서 수박을 2번 출력해야 하는데 처음에 < 로 작성해서 수박수박수가 필요할 때 수박수가 나옴. 등호도 잘 보자
5. System.out.println
main 안에서는 main 밖에 있는 메서드를 호출해서 사용하고, result라는 String형 변수에 저장해서 result를 sout로 출력해주어야지만 화면에 수박수박~이 출력된다.
sout도 사용 안해놓고 왜 출력이 안되지? 했던 바보같은 사람..
solution(n); 만 호출하고 리턴값을 저장하거나 출력하지 않으면 아무 일도 일어나지 않는다.
6. answer += “수박” >> 문자열 연결
문자열을 연결할 때는 System.out.println()*2 이 아니고 선언해둔 문자열 변수에 +=로 계속 이어붙이면 된다.
문자열을 answer 변수에 담으려면 System.out.print(...) 대신 answer += ... 식으로 누적할 것!
다른 방식들
1) 삼항 연산자 사용하기
public static String solution(int n) {
String answer = "";
for (int i = 0; i < n; i++) {
answer += (i % 2 == 0) ? "수" : "박";
}
return answer;
}
2) StringBuilder 사용하기
class Solution {
public static void main(String[] args) {
int n = 11;
String result = solution(n);
System.out.println(result);
}
public static String solution(int n) {
StringBuilder answer = new StringBuilder();
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
answer.append("수");
} else {
answer.append("박");
}
}
return answer.toString();
}
}
String을 +=로 반복해서 누적하면, 내부적으로 새로운 문자열 객체를 계속 생성해서 성능이 안좋아진다.
그러므로 StringBuilder로 리팩토링 가능함.
※ 내 코드와 StringBuilder를 사용했을 때의 성능 차이
방법 | 성능 | 설명 |
String += | 느림 (O(n²)) | 문자열이 매번 새로 생성됨 |
StringBuilder | 빠름 (O(n)) | 버퍼에 누적, 메모리 효율적 사용 |
'IT > 코딩테스트' 카테고리의 다른 글
[CodeUp] 3130 : 소들의 헤어스타일 (1) | 2025.06.08 |
---|---|
[CodeUp] 3117 : 0은 빼! (2) | 2025.06.05 |
[프로그래머스] 올바른 괄호 (1) | 2025.06.02 |