728x90
▶문제 : 코딩테스트 연습 - 가장 가까운 같은 글자 | 프로그래머스 스쿨 (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
'프로그래머스 > C' 카테고리의 다른 글
프로그래머스 Level 2 : 택배 배달과 수거하기 C언어 (0) | 2023.01.16 |
---|---|
프로그래머스 Level 2 : 숫자 카드 나누기 C언어 (0) | 2022.12.19 |
프로그래머스 Level 2 : 우박수열 정적분 C언어 (0) | 2022.11.12 |
프로그래머스 Level 2 : 숫자 카드 나누기 C언어 (0) | 2022.11.10 |
프로그래머스 Level 2 : 야간 전술보행 C언어 (0) | 2022.10.31 |
댓글