문자 반복 출력하기

2024. 7. 19. 18:00코딩테스트 입문

https://school.programmers.co.kr/learn/courses/30/lessons/120825

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.


제한사항

  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.

입출력 예

my_string n result
"hello" 3 "hhheeellllllooo"

입출력 예 설명
입출력 예 #1

  • "hello"의 각 문자를 세 번씩 반복한 "hhheeellllllooo"를 return 합니다.

문자열과 숫자 n이 주어지고, 해당 문자열의 요소들을 각각 n개씩 늘린 새로운 문자열을 반환하는 문제입니다.

파이썬은 간단하게 *n 을 사용하면 요소를 n배 늘릴 수 있는데요, C 같이 지원하지 않는 언어라면 직접 반복문을 구현하면 풀 수 있습니다

이번에는 파이썬과 C로 문제를 풀어보겠습니다.

 

1. 파이썬

리스트 컨프리헨션과 조인을 사용합니다.

def solution(my_string, n):
    # ''을 중간자로 결합합니다.
    # my_string의 각 요소를 n배 해줍니다.
    answer = ''.join([char * n for char in my_string])
    return answer

 

2. C

이중 반복문을 사용합니다.

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

char* solution(const char* my_string, int n) {
    // my_string의 길이를 구합니다.
    int len = strlen(my_string);
    // 동적 할당합니다. len * n + 1(\0)
    char* answer = (char*)malloc((len * n + 1) * sizeof(char));
    // 반복문을 실행합니다.
    for (int i = 0; i < len; i++) {
        // answer에 n배한 값들을 집어넣습니다.
        for (int j = 0; j < n; j++) {
            answer[n * i + j] = my_string[i];
        }
    }
    // 마지막 문자열에 \0을 추가합니다.
    answer[len * n] = '\0';
    return answer;
}

 

간단하게 풀 수 있는 문제입니다.

'코딩테스트 입문' 카테고리의 다른 글

각도기  (0) 2024.07.21
특정 문자 제거하기  (1) 2024.07.20
짝수 홀수 개수  (1) 2024.07.18
직각삼각형 출력하기  (0) 2024.07.17
문자열 뒤집기  (0) 2024.07.16