728x90
반응형
코딩테스트 연습 - 수박수박수박수박수박수?
길이가 n이고, 수박수박수박수....와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 수박수박을 리턴하고 3이라면 수박수를 리턴하면 됩니다. 제한 조��
programmers.co.kr
문제 설명 |
길이가 n이고, “수박수박수박수….”와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution 완성 예를 들어 n=4이면, “수박수박”을 리턴하고 3이면 “수박수”리턴 |
제한 조건 |
|
입출력 예 |
|
x | answer |
3 | "수박수" |
4 | "수박수박" |
나의 풀이
1. “수”,”박”을 각각 Pattern이라는 배열에 저장
2. for문을 돌려 n의 길이만큼 나타내기 : 홀수인 경우 한글자 누락
3. 홀수인 경우 누락된 한 글자를 나중에 추가 : answer += “수”;
class Solution {
public String solution(int n) {
String answer = "";
String[] Pattern = {"수", "박"};
if (n%2 == 0) {
for (int i=0; i<n/2; i++)
for (int j=0; j<2; j++)
answer += Pattern[j];
}
else {
for (int i=0; i<n/2; i++)
for (int j=0; j<2; j++)
answer += Pattern[j];
answr = answer + "수";
}
retrun answer;
}
}
JAVA1 코드 정리
1. “수”,”박”을 각각 Pattern이라는 배열에 저장
2. for문을 돌려 n의 길이만큼 나타내기 : 홀수인 경우 한글자 누락
3. 홀수인 경우 누락된 한 글자를 나중에 추가 : answer += “수”;
class Solution {
public String solution(int n) {
return new String(new char[n/2+1]).replace("\0","수박").subString(0,n);
}
}
* subString(0, n) : 0부터 n까지 자르는 함수
1. new String() 생성자 키워드 안에 char 배열을 넣으면 String 객체로 변환
2. 빈 char 배열이 생성되면 그 안에는 \0으로 생성
JAVA2 코드 정리
삼항연산자를 이용하여 자릿수(for문 중 i)가 홀수면 “수”, 짝수면 “박”
class Solution {
public String solution(int n) {
String result = "";
for (int i=0; i<n; i++)
result += i%2==0 ? "수" : "박";
return result;
}
}
JAVA3 코드 정리
StringBuffer를 이용하여 Java2의 풀이법을 sf에 넣어 나중에 String으로 바꿔 출력
class Solution {
public String solution(int n) {
StringBuffer sf = new StringBuffer();
for (int i=0; i<n; i++)
sf.append(i%2==1 ? "수" : "박");
return sf.toString();
}
}
* StringBuffer : 문자열 추가 or 변경시 사용
- insert : 특정위치 문자열 삽입
- append : 문자열 추가
이번에는 다양한 방법이 존재했다. 그 중에서 나의 코드가 제일 비효율적이고 길었다. 나의 코드에서도 일단 if문과 else를 합쳐서 좀 더 짧게 쓸 수 있었는데 그 생각을 하지 못했다. 다양한 방법 중 가장 좋았던 것은 char 배열을 string으로 고친 후 replace와 subString을 써서 한줄로 표현한 방법이었다. 다 아는 문법들이었지만, 이런 방법은 생각하지 못했었다. 그리고 StringBuffer도 다른 사람들에 풀이에 비하면 굳이?라는 생각이 들긴 하지만, StringBuffer라는 새로운 것을 사용했다는 점이 좋아 풀이 방법에 추가하였다 |
728x90
반응형
'프로그래머스 > Java | Level1' 카테고리의 다른 글
[프로그래머스/Java]Level1 - 하샤드수 (0) | 2020.10.21 |
---|---|
[프로그래머스/Java]Level1 - 두 정수 사이의 합 (0) | 2020.10.19 |
[프로그래머스/Java]Level1 - 약수의 합 (0) | 2020.10.19 |
[프로그래머스/Java]Level1 - 직사각형 별찍기 (0) | 2020.10.18 |
[프로그래머스/Java]Level1 - X만큼 간격이 있는 n개의 숫자 (0) | 2020.10.08 |