수박수박수박수박수박수?
문제
문제 설명
길이가 n이고, 수박수박수박수....와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 수박수박을 리턴하고 3이라면 수박수를 리턴하면 됩니다.
제한 조건
n은 길이 10,000이하인 자연수입니다.
문제 풀이
간단한 문제이다. for문으로 돌려 i가 짝수일때는 '수', i가 홀수 일떄는 '박'을 answer에 더한다
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | #include <string> #include <vector> using namespace std; string solution(int n) { string answer = ""; for(int i =0;i<n;i++){ switch(i%2){ case 0: answer += "수"; break; case 1: answer += "박"; } } return answer; } | cs |
그 이후 다른 사람들의 풀이를 보다가 이 풀이를 보았다.
by 윤원준 , 백승규
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #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; } | cs |
이 풀이에서는 & 비트 연산자를 사용하였고 이를 잘 모르던 나는 인터넷을 검색 해보았다.
x & 1 produces a value that is either 1 or 0, depending on the least significant bit of x: if the last bit is 1, the result of x & 1 is 1; otherwise, it is 0. This is a bitwise AND operation.
출처: https://stackoverflow.com/questions/38922606/what-is-x-1-and-x-1
스텍오버플로우에서 본글이다. 즉 x & 1은 x의 가장 작은 비트에 1 AND 비트연산을 하여 1 또는 0을 반환한다. 짝수면 0을 반환하고 홀수면 1을 반환한다. 즉 풀이는 같지만 표현하는 방법이 다르다.
> 비트연산은 산술 연산보다 속도가 빠르지만 전체적인 속도향상에 크게 도움이 되지 않고 가독성이 떨어질뿐 더러 최신 컴파일러들은 자동으로 *2 같은 연산은 쉬프트 연산으로 바꿔준다.
예시
*2 의 산술연산의 경우 << 1
*4 의 경우 << 2
/2 의 경우 >> 1
/4 의 경우 >> 2
'군대에서 한것 > 프로그래머스' 카테고리의 다른 글
<프로그래머스> Level1 K번째수 (0) | 2019.01.05 |
---|---|
<프로그래머스> Level1 같은 숫자는 싫어 (0) | 2019.01.05 |
<프로그래머스> Level1 시저 암호 (0) | 2019.01.05 |
<프로그래머스> Level1 완주하지 못하는 선수 (0) | 2019.01.02 |
<프로그래머스> Level1 소수의 합 (0) | 2019.01.01 |