티스토리 뷰
주어진 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char* solution(int tile_length) {
char* answer = (char*)malloc(sizeof(char) * (tile_length + 1));
char com[6] = { 'R','R','R','G','G','B' };
if (tile_length % 6 == 1 || tile_length % 6 == 2 || ) //빈칸
strcpy(answer, "-1");
else {
for (int i = 0; i < tile_length; i++)
answer[i] = com[i % 6];
answer[tile_length] = '\0';
}
return answer;
}
int main() {
int tile_length1 = 11;
char* ret1 = solution(tile_length1);
printf("solution 함수의 반환 값은 %s 입니다.\n", ret1);
int tile_length2 = 16;
char* ret2 = solution(tile_length2);
printf("solution 함수의 반환 값은 %s 입니다.\n", ret2);
}
완성 코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
char* solution(int tile_length) {
char* answer = (char*)malloc(sizeof(char) * (tile_length + 1));
char com[6] = { 'R','R','R','G','G','B' };
if (tile_length % 6 == 1 || tile_length % 6 == 2 || tile_length % 6 == 4)
strcpy(answer, "-1");
else {
for (int i = 0; i < tile_length; i++)
answer[i] = com[i % 6];
answer[tile_length] = '\0';
}
return answer;
}
int main() {
int tile_length1 = 11;
char* ret1 = solution(tile_length1);
printf("solution 함수의 반환 값은 %s 입니다.\n", ret1);
int tile_length2 = 16;
char* ret2 = solution(tile_length2);
printf("solution 함수의 반환 값은 %s 입니다.\n", ret2);
}
결과
tile_length | answer | |
예시 #1 | 11 | RRRGGBRRRGG |
예시 #2 | 16 | -1 |
코드 분석
단계 | 과정 |
main | 타일의 길이를 저장할 변수 tile_length를 선언하고 값을 넣는다. solution함수를 호출한다. |
solution | 타일의 갯수에 따라 배열의 크기를 지정하기 위해 malloc를 사용하여 포인터변수 answer를 선언한다. |
solution - if | 타일은 무조건 R이 연속 3번, G가 연속 2번, B가 한번으로 이어져야 하기 때문에 갯수의 짝이 맞지 않으면 -1를 반환해야 한다. 따라서 RRRGGB 총 6개를 기준으로, 타일의 길이를 6으로 나누었을 때 나머지가 1이면 R이 한번 색칠되기 때문에 성립되지 않는다. 나머지가 2이면 R이 두번 색칠되기 때문에 성립되지 않는다. 나머지가 3이면 R이 세번 색칠되기 때문에 성립한다. 나머지가 4이면 G가 한번 색칠되기 때문에 성립되지 않는다. 나머지가 5이면 G가 두번 색칠되기 때문에 성립한다. 나머지가 0이면 B가 한번 색칠되기 때문에 성립한다. 따라서 나머지가 1,2,4일때 반환값에 -1를 저장한다. |
solution | 반환값에 -1이 저장되지 않았을 때(성립할때), com배열의 각 색깔과 비교하여 색칠할 색깔을 구하고 배열에 저장한다. 배열 answer를 return한다. |
main | 결과를 출력한 후 프로그램을 종료한다. |
goorm
구름은 클라우드 기술을 이용하여 누구나 코딩을 배우고, 실력을 평가하고, 소프트웨어를 개발할 수 있는 클라우드 소프트웨어 생태계입니다.
www.goorm.io
'[코테] > [GroomEdu]' 카테고리의 다른 글
[COS PRO 2급] 3차 8번_TV 애청자 A씨 (C/C++) (0) | 2021.05.16 |
---|---|
[COS PRO 2급] 3차 7번_남은 재료로 주스 만들기 (C/C++) (0) | 2021.05.16 |
[COS PRO 2급] 3차 5번_여행객의 총 교통비 구하기 (C/C++) (0) | 2021.05.15 |
[COS PRO 2급] 3차 3번_체조 선수의 점수 구해주기 (C/C++) (0) | 2021.05.14 |
[COS PRO 2급] 3차 4번_단어의 오타 수정하기 (C/C++) (0) | 2021.05.14 |
댓글
공지사항
최근에 올라온 글
TAG
- c언어 기출문제
- CosPro
- YBM
- cospro기출
- 구름에듀
- 배열활용문제
- 코딩테스트
- 구름 기출문제
- 프로그래머스
- COSPRO 2급
- cospro기출문제
- 코스프로
- 자바
- Java
- C
- 1급
- groom
- c언어
- programmers
- lv1
- C++
- 기출문제
- 연습문제
- Cos Pro
- groomedu
- YBM기출
- 알고리즘
- lv2
- 구름에듀 기출문제
- 배열
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함