inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

(2026 최신!) 일주일만에 합격하는 정보처리기사 실기

(기출) 2023년 2회 코드해석 문제

23년 2회 C언어 1번 문제 질문 있습니다.

해결된 질문

107

HongChan Ahn

작성한 질문수 1

0

2년 2회 C언어 영상 시작할 때 나온 문제에 대한 질문입니다.

입력값이 5,4,3,2,1로 들어왔으므로
n= { 5, 4, 3, 2, 1}이 되는 것은 이해했습니다.
다만 출력이 43215로 나오려면

index를 한 칸씩 앞으로 땡겨야한다고 생각해서

n[(i+4)%5]로 진행하였는데 왜 실제 답은 n[(i+1)%5]가 되는 지 궁금합니다
해설대로 푼다면 오히려 답은 15432로 나와야하지 않나?라는 생각이 듭니다.

c 정보처리기사

답변 3

0

jnl1997

이런 경우 삼항연산자를 사용해도 정답 처리 될까요?
i != 4? n[i+1] : n[0]
이런 식으로요. 제시해주신 답이 좋은 답인건 알겠으나 결과만 동일하면 되는거 아닌가 싶어서요! 실제 시험에서는 긴장하고 그러면 더 나은 답을 찾기 어려울 수 있으니까요

0

주말코딩

해당 문제는 사용할 수 있는 연산자와 변수가 보기로 주어졌던 문제입니다.

보기가 뭔지는 제가 시험을 치지 않아서 알 수는 없습니다만,

보기에 !와 :가 아마 없었을 겁니다. 그렇게 중복 답안이 나올 수가 없기 때문입니다.

 

그리고 결과가 같게 나온다고 하더라도 문제 지문에서 "같은 답인 경우 가장 짧은 형태만 정답으로 인정한다"라는 문장이 있었다고 합니다.

 

정답보다 길거나 연산자가 더 많이 들어갔다면 오답처리 될 것으로 보입니다.

0

주말코딩

안녕하세요,

제일 좋은 답변은 n[(i+1)%5]로 해보고, n[(i+4)%5]로 해서 비교해서 보여드리는 것이라 생각합니다.

배열의 인덱스와 값을 먼저 보여드리고 시작하겠습니다.

입력값: 5, 4, 3, 2, 1

  • n[0] = 5

  • n[1] = 4

  • n[2] = 3

  • n[3] = 2

  • n[4] = 1


 

우리가 원하는 출력은 4, 3, 2, 1, 5입니다.

이렇게 되려면 다음 순서로 배열을 출력해야합니다.

n[1], n[2], n[3], n[4], n[0]

 

우리가 알고 있는 정답으로 검증을 해봅시다.

  • i=0일 때: (0+1)%5 = 1 → n[1] = 4 ✓

  • i=1일 때: (1+1)%5 = 2 → n[2] = 3 ✓

  • i=2일 때: (2+1)%5 = 3 → n[3] = 2 ✓

  • i=3일 때: (3+1)%5 = 4 → n[4] = 1 ✓

  • i=4일 때: (4+1)%5 = 0 → n[0] = 5 ✓

출력: 43215

 


질문 주신 코드를 넣으면 아래처럼 됩니다.

n[(i+4)%5]를 사용하면 다음과 같이 동작합니다:

  • i=0일 때: (0+4)%5 = 4 → n[4] = 1

  • i=1일 때: (1+4)%5 = 0 → n[0] = 5

  • i=2일 때: (2+4)%5 = 1 → n[1] = 4

  • i=3일 때: (3+4)%5 = 2 → n[2] = 3

  • i=4일 때: (4+4)%5 = 3 → n[3] = 2

출력: 15432

 

값과 인덱스를 헷갈리지 않도록 위 처럼 하나씩 적어보면 확실히 무엇이 다른 지를 알 수 있습니다.

 

질문에 작성하셨던 n[(i+4)%5]는 배열을 오른쪽으로 4칸 회전시킨 것과 같은 효과를 내기 때문에 첫 번째 요소부터 마지막에서 시작하여 역순으로 접근하게 됩니다.

 

반면 우리가 원하는 것은 왼쪽으로 1칸 회전시킨 주어진 출력값인 43215이므로 n[(i+1)%5]가 정답입니다.

 

추가로, 질문자님께서 올리신 코드를 직접 돌려본 결과입니다.

image.png

 

0

HongChan Ahn

제가 질문을 살짝 착각했더라고요 감사합니다.

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. HongChan Ahn님.

질문 주신 내용에 대해 설명드리겠습니다. 주어진 문제에서 입력 값이 {5, 4, 3, 2, 1}이라는 것은 이해하셨고, 이제 출력이 43215가 나오기 위해서는 배열의 인덱스를 조작해야 하는 상황입니다.

n[(i+1)%5] 연산은 배열의 요소를 순환 형태로 접근할 수 있게 해줍니다. 이를 통해 현재 인덱스 i에서 하나씩 앞으로 이동하는 효과를 줄 수 있습니다. 예를 들어, 다음 순서로 계산됩니다:
- i = 0일 때, (0+1)%5 = 1이므로 n[1] = 4
- i = 1일 때, (1+1)%5 = 2이므로 n[2] = 3
- i = 2일 때, (2+1)%5 = 3이므로 n[3] = 2
- i = 3일 때, (3+1)%5 = 4이므로 n[4] = 1
- i = 4일 때, (4+1)%5 = 0이므로 n[0] = 5

이로 인해 결과적으로 순환 형태의 출력값 43215를 얻게 됩니다.

질문자님의 접근 방식인 n[(i+4)%5]는 생각한 것과 다르게 동작할 수 있는데 이는 실제 나머지 연산의 순환 속성 때문입니다. 두 접근방식이 조금 다르게 배열 접근 순서를 결정하기 때문입니다.

이와 관련된 유사한 질문이 다음 URL에 있으니 참고하시면 이해에 도움이 될 것입니다:
- 23년 2회 첫번째문제 질문: 이 질문에서는 모듈로 연산과 관련된 논의가 포함되어 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

26년 1회차 기출 강의

0

54

2

기출문제

0

55

1

C언어에서

0

60

1

포인터 질문

0

57

2

실기 공부 시작 하려고 하는데요

0

96

2

필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)

0

93

2

26년 1회 실기 해설 강의

0

112

2

53번 4-1 자료 오류 있는 것 같습니다.

0

105

2

7번문제

0

88

2

C언어 변형문제 9번문제 Pdf 수정요청

0

76

2

메서드 오버드라드

0

70

2

실수

0

63

1

공부 우선순위 우선강의 알려주세요

0

130

1

생성자 호출순서 강의 10번 문제 30분대 질문입니다

0

70

2

25년 2회 기출 5:40 질문입니다.

0

52

2

모의고사1회 3번 파이썬문제

0

85

2

C언어 출제변형 6번 문제

0

55

2

c언어 출제변형 강의 질문

0

42

2

28:40

0

45

2

C :  언어 배열과  문자열 수업자료

0

40

2

파이썬 리스트, 딕셔너리 질문

0

57

2

모의고사 관련 질문 건

1

79

3

정적 변수, 정적 메서드(static) v2

0

55

2

v1.2 와 v0.91 PDF

0

111

1