본문 바로가기
알고리즘/코딩 테스트 문제

[프로그래머스] 모스 부호(1)(C) - strtok()

by 진진리 2023. 9. 21.
728x90
  • 문자열을 특정 문자(공백 등)으로 자르고 순서대로 접근하는 방법
ptr = strtok(str, " ");
while(ptr!=NULL){
    ptr = strtok(NULL, " ");
}

 

  • 모스 부호(1) 문제 풀이
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* letter) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    char* answer = (char*)malloc(sizeof(char)*1000);
    char* mos[] = {".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."};
    int index = 0;
    char* ptr = strtok(letter, " ");
    
    while(ptr!=NULL){
        for(int i=0;i<27;i++){
            if(strcmp(ptr, mos[i])==0){
                answer[index++] = (char)(i+'a');
                break;
            }
        }
        ptr = strtok(NULL, " ");
    }
    
    answer[index] = '\0';
    
    return answer;
}