Menu
Coddy logo textTech

Practice #5

Coddy의 연결 리스트 - 자료구조 시리즈 #5 코스 레슨 — 14개 중 14번째.

challenge icon

챌린지

쉬움

정수 배열 arr(연결 리스트의 값들)와 양의 정수 n이 주어질 때, 뒤에서 n번째 노드(1부터 시작)의 값을 반환하는 함수 nthFromEnd를 작성하세요.

만약 n이 범위를 벗어나면(0, 음수, 또는 리스트의 크기보다 큰 경우), -1을 반환하세요.

이 문제를 해결하기 위해 연결 리스트를 사용하세요! 전형적인 투 포인터(two-pointer) 기법을 사용하면 길이를 계산하는 과정을 생략할 수 있습니다.

반드시 LinkedList 클래스를 사용해야 합니다 (node.<ext>와 함께 linkedlist.<ext>에 제공됨). 결과를 계산하기 위해 배열의 내장 reverse, 슬라이싱 또는 표준 라이브러리의 리스트 연산과 같은 언어 내장 기능을 사용하지 마세요.

직접 해보기

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "solution.h"

int main() {
    char line1[8192];
    char line2[64];
    if (!fgets(line1, sizeof(line1), stdin)) line1[0] = '\0';
    if (!fgets(line2, sizeof(line2), stdin)) line2[0] = '\0';
    int arr[4096];
    int len = 0;
    char* tok = strtok(line1, " \t\r\n");
    while (tok) { arr[len++] = atoi(tok); tok = strtok(NULL, " \t\r\n"); }
    int n = atoi(line2);
    int r = nthFromEnd(arr, len, n);
printf("%d\n", r);
    return 0;
}

연결 리스트 - 자료구조 시리즈 #5의 모든 레슨