반응형
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
** Javascript
1)
프로그래머스를 알고 거의 첫번째로 푼 문제가 아닐까 싶다.
그 당시 javascript 메소드 활용을 잘 못하였다.
function solution(n) {
var answer = '';
for (var i=1; i<=n; i++) {
if (i % 2 === 0) {
answer += "박";
} else {
answer += "수";
}
}
return answer;
}
2)
지금 다시 푼다면 이렇게 풀 것이다.
function solution(n) {
const watermelon = "수박";
return (n % 2) ? watermelon.repeat(Math.floor(n / 2)) + "수" : watermelon.repeat(n / 2);
}
추천을 많이 받은 풀이 중 더 좋은 것을 가져왔다.
function solution(n) {
return '수박'.repeat(n/2) + (n%2 === 1 ? '수' : '');
}
** Python
def solution(n):
return "수박" * (n // 2) + "수" if n % 2 else "수박" * (n // 2)
내 풀이는 위와 같은데 더 짧게 푼 사람들이 많았다.
def water_melon(n):
return "수박"*(n//2) + "수"*(n%2)
(이 풀이가 내 마음의 베스트)
def water_melon(n):
s = "수박" * n
return s[:n]
** Java
java는 베스트 풀이를 변환해보았다.
class Solution {
public String solution(int n) {
return "수박".repeat((int) n / 2) + "수".repeat(n % 2);
}
}
참고로 java11 부터 String::repeat 을 사용할 수 있다.
하지만 효율은 떨어지는 편이다.
Java 에서 string repeat하는 법을 검색했을 때 갓택오버플로우에서 추천하는 방법으로 아래 같은 방법이 있다.
repeated = new String(new char[n]).replace("\0", s);
보다시피 추천수가 후덜덜하다.
출처: https://stackoverflow.com/questions/1235179/simple-way-to-repeat-a-string
다른 풀이 중 추천을 두번째로 많이 받은 풀이가 위 방법을 응용한 풀이다.
public class WaterMelon {
public String watermelon(int n){
return new String(new char [n/2+1]).replace("\0", "수박").substring(0,n);
}
}
위 풀이는 속도가 빠른 편이다.
반응형
'프로그래머스 > level 1' 카테고리의 다른 글
[프로그래머스] 소수 찾기 (0) | 2021.08.23 |
---|---|
[프로그래머스] 서울에서 김서방 찾기 (0) | 2021.08.23 |
[프로그래머스] 문자열을 정수로 바꾸기 (0) | 2021.08.23 |
[프로그래머스] 약수의 합 (0) | 2021.08.14 |
[프로그래머스] 이상한 문자 만들기 (0) | 2021.08.14 |