수박수박수박수박수?
문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를 들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
예시
n | return |
3 | "수박수" |
4 | "수박수박" |
코드 해석 및 전체 코드
알고리즘
1. 문자열 길이만큼 for문을 돌린다.
2. i가 홀수일 땐 "수", 짝수일 땐 "박"을 문자열에 더한다.
StringBuilder 클래스의 append 사용
StringBuilder a = new StringBuilder("Hello");
a.append(" World");
System.out.println(a); // Hello World
StringBuilder answer
StringBuilder는 문자열 연산이 많은 프로그래밍을 할 때 사용하는 클래스이다. 많이 공부한 게 아닌 리서치 지식으로 판단....!!!
1. 문자열 길이만큼 반복
"수박"은 두 글자로 문자열 길이가 홀수일 땐 "수", 짝수일 땐 "박"을 출력하기 위해
초기식은 i = 1로, 조건식은 1 <= n으로 1 ~ n까지 반복하였다.
2. 문자열 더하기
StringBuilder 클래스의 문자열의 마지막에 추가해주는 append 메서드를 사용하였다.
i를 2로 나누었을 때 0이 아니면(삼항 연산자의 true값) 홀수이므로 "수"를 추가하고
i를 2로 나누었을 때 0이면(삼항 연산자의 false값) 짝수이므로 "박"을 추가한다.
StringBuilder 클래스로 구현
class Solution {
public String solution(int n) {
//StringBuffer answer = new StringBuffer("");
StringBuilder answer = new StringBuilder("");
for(int i = 1; i <= n; i++){
answer = i % 2 != 0 ? answer.append("수") : answer.append("박");
}
return answer.toString();
}
}
StringBuilder와 StringBuffer 속도 차이
StringBuffer는 StringBuilder에 비해 무거움.
String 클래스로 구현
class Solution {
public String solution(int n) {
String answer = "";
for(int i = 1; i <= n; i++){
if(i % 2 != 0) answer += "수";
else answer += "박";
}
return answer;
}
}
String 클래스 구현 시 속도
StringBuilder와 StringBuffer보다 현저히 느림을 알 수 있음.
'코딩 테스트 > [JAVA] programmers 코딩 테스트 연습' 카테고리의 다른 글
[No.15] 약수의 합 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.09 |
---|---|
[No.14] 문자열을 정수로 바꾸기 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.08 |
[No.12] 문자열 다루기 기본 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.07 |
[No.11] 문자열 내림차순으로 배치하기 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.07 |
[No.8] 2016년 / 프로그래머스 코딩 테스트 연습 JAVA (0) | 2021.06.05 |
댓글