Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 깊이 우선 탐색
- Java
- 오블완
- Lv. 0
- javascript
- group by
- 파이썬
- C언어
- programmers
- 자바스크립트
- select
- Lv. 1
- SQL 고득점 KIT
- 프로그래머스
- LEVEL 2
- dfs
- level 3
- Python
- Dynamic Programming
- 동적계획법
- Lv. 2
- 티스토리챌린지
- softeer
- 너비 우선 탐색
- DP
- bfs
- 소프티어
- Lv. 3
- SQL
- join
Archives
- Today
- Total
몸과 마음이 건전한 SW 개발자
프로그래머스 [Lv. 0] 문자열 겹쳐쓰기 {언어 : C언어} 본문
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/181943
정답 코드 1
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h> // strlen과 strcpy를 사용하기 위해 추가
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* my_string, const char* overwrite_string, int s) {
int len_my_string = strlen(my_string); // my_string의 길이 계산
int len_overwrite_string = strlen(overwrite_string); // overwrite_string의 길이 계산
// 동적 메모리 할당: my_string의 길이 + 1(null 종료 문자)
char* answer = (char*)malloc(len_my_string + 1);
// my_string을 answer에 복사
strcpy(answer, my_string);
// overwrite_string을 answer의 적절한 위치에 복사
for (int i = 0; i < len_overwrite_string; ++i) {
answer[s + i] = overwrite_string[i];
}
// answer 문자열에 null 종료 문자 추가
answer[len_my_string] = '\0';
return answer;
}
정답 코드 2 (memcpy)
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h> // strlen, strcpy, memcpy를 사용하기 위해 추가
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* my_string, const char* overwrite_string, int s) {
int len_my_string = strlen(my_string); // my_string의 길이 계산
int len_overwrite_string = strlen(overwrite_string); // overwrite_string의 길이 계산
// 동적 메모리 할당: my_string의 길이 + 1(null 종료 문자)
char* answer = (char*)malloc(len_my_string + 1);
// my_string을 answer에 복사
strcpy(answer, my_string);
// overwrite_string을 answer의 s 인덱스부터 시작하는 위치에 memcpy를 사용해 복사
memcpy(answer + s, overwrite_string, len_overwrite_string);
// answer 문자열에 null 종료 문자 추가
answer[len_my_string] = '\0';
return answer;
}
정답 코드 3
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* my_string, const char* overwrite_string, int s) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
// 이 코드는 my_string의 길이에 1을 더한 만큼의 문자 공간을 동적으로 할당하여, 그 메모리 주소를 answer 포인터에 저장합니다.
char* answer = (char*)malloc(strlen(my_string)+1);
for(int i=0; i < strlen(my_string); i++) answer[i] = my_string[i];
for(int i=s; i < s + strlen(overwrite_string); i++) answer[i] = overwrite_string[i-s];
answer[strlen(my_string)]='\0';
return answer;
}
'개발 언어 입문 > C언어' 카테고리의 다른 글
Softeer [Level 1] 개표 {언어 : C언어} (0) | 2024.02.23 |
---|---|
Softeer [Level 1] 나무 심기 {언어 : C언어} (0) | 2024.02.22 |
프로그래머스 [Lv. 0] 홀짝 구분하기 {언어 : C언어} (0) | 2024.02.17 |
프로그래머스 [Lv. 0] 문자열 돌리기 {언어 : C언어} (0) | 2024.02.17 |
프로그래머스 [Lv. 0] 문자열 붙여서 출력하기 {언어 : C언어} (0) | 2024.02.14 |