본문 바로가기
프로그래머스/C

[프로그래머스/C]프로그래머스 Level 1 : 가장 가까운 같은 글자 C언어

by starfish22 2022. 12. 19.
728x90

▶문제 : 코딩테스트 연습 - 가장 가까운 같은 글자 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

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

programmers.co.kr

 

▶코드 작성

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

int *solution(const char *s) {
    int *answer = (int *)malloc(sizeof(int) * 10000);
    int point[26];//각 알파벳 위치 저장

    for (int i = 0; i < 26; i++) point[i] = -1;//point배열 초기화

    for (int i = 0; s[i] != '\0'; i++) {//문자열 끝까지 반복
        if (point[s[i] - 'a'] == -1) answer[i] = -1;//처음 나온 알파벳이라면 -1
        else answer[i] = i - point[s[i] - 'a'];//현재 위치 - 이전 알파벳 위치
        point[s[i] - 'a'] = i;//알파벳 위치 저장
    }

    return answer;
}

 

▶해석

point배열을 선언하여 각 알파벳이 나왔던 위치 i를 저장하였다.

point배열 값이 -1이라면 처음으로 나온 알파벳이고,

아니라면 현재 위치 i와 이전에 나왔던 알파벳 위치 point [s [i] - 'a' ]를 빼주었다.

 

이때 s [i] - 'a'는 0에서 25까지 a부터 z순으로 ASCII코드값을 이용하여 구할 수 있다.

'a' - 'a' = 0

'c' - 'a' = 2

728x90

댓글