얼렁뚱땅 개발 블로그

[프로그래머스] LEVEL 1 - 수박수박수박수박수박수? 본문

코딩테스트/프로그래머스

[프로그래머스] LEVEL 1 - 수박수박수박수박수박수?

김경원0519 2021. 4. 23. 11:04
반응형

문제

길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다.

 

입출력 예시

n return
3 "수박수"
4 "수박수박"

 

풀이

1. (n의 크기 * 3) + 1 만큼 answer에 동적할당을 해준다. ( calloc 사용 추천 )

MSVC와 gcc의 한글 byte 차이

  • MSVC : 2byte
  • gcc : 3byte

2. 비트연산자를 이용해서 LSB가 0(짝수), 1(홀수)인지 판별을 한다.

ex ) 짝수 2, 4와 홀수 3, 5의 비트

2 : 0x10, 4 : 0x100

3 : 0x11, 5 : 0x101

위 예시로 봤을 때 LSB가 짝수인 경우 0, 홀수인 경우 1이다.

 

3. answer의 index가 짝수인 경우 "수", 홀수인 경우 "박"을 answer에 넣는다.

코드

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>

char* solution(int n) {
	// 리턴할 값은 메모리를 동적 할당해주세요.
	char* answer = (char*)calloc((n * 3) + 1, sizeof(char));

	for (int i = 0; i < n; i++) {
		strcat(answer, i & 1 ? "박" : "수");
	}

	return answer;
}

 

반응형
Comments