Level1 - -
문제
문제 설명
길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.
제한 조건- n은 길이 10,000이하인 자연수입니다.
n | return |
3 | "수박수" |
4 | "수박수박" |
풀이
사용언어 : C++
문자열 리터럴 결합하는 경우 에러가 발생 할 수 있다는걸 이번 풀이를 하면서 알게 되었다.
문자열 결합시에는 아래 처럼 insert나 append를 이용해서 문자열을 결합
string str1 = "abcde";
string str2 = str1.insert(2, "A");
//abAcde 출력
str1.append(추가 할 문자열)
str1.append(추가 할 문자열, 문자수)
str1.append(추가 할 문자열, 위치, 문자수)
string str1 = "abcde";
string str2 = str1.append("ABC");
//abcdeABC 출력
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
for (int i = 1;i <= n; ++i){
if ( i % 2 == 0 ){
answer += "박";
}
else {
answer += "수";
}
}
return answer;
}
다른 사람의 풀이
&연산자를 이용한 풀이가 이전에 사용했던게 기억났다.
홀수는 이진수로 항상 1로 끝나게 된다.
&연산자는 같은 숫자를 &하면 같은 숫자가 나오게 된다.
1과 1일 경우 1을
0과 0일 경우 0이 된다.
이번 문제에서 홀수와 짝수를 구분해야 하는 상황에서
특정수 n과 1을 &해서 n이 짝수면 끝이 0으로 끝나게 되어 true가 아니게 되고
홀수면 끝이 1이 되어 1과 1을 &연산을 하게 되어 true가 되게 하는 방식이 된다.
#include <string>
#include <vector>
using namespace std;
string solution(int n) {
string answer = "";
for(int i = 0; i < n; i++)
i & 1 ? answer += "박" : answer += "수";
return answer;
}
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12922
'개발 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/C++] 문자열 내림차순으로 배치하기 (0) | 2022.11.22 |
---|---|
[프로그래머스/C++] 문자열 다루기 기본 (0) | 2022.11.21 |
[프로그래머스/C++] 내적 (0) | 2022.11.19 |
[프로그래머스/C++] 없는 숫자 더하기 (0) | 2022.11.18 |
[프로그래머스/C++] 가운데 글자 가져오기 (0) | 2022.11.17 |