inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

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

해결된 질문

122

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년2회 실기기출은 언제쯤...

0

30

2

이론 공부법 요약본 버전 업데이트 문의

0

32

2

정처기 필기 준비할때 이 이론을 다시 외워도 될까요?

0

56

2

조건 반복문 질문: for 문 ?

0

66

1

정처기 26-2회. 9번 질문드립니다!

0

83

1

이론 보면서 질문이 있습니다.

0

80

2

정보처리기사 실기 26년 2회 SRT 스케줄링 문제 단위 질문

0

90

2

유튜브(정보처리기사 실기 | 26년 2회 기출문제 코드 해설)

0

150

2

262 정처기 실기 C언어코딩

0

48

1

정보처리기사 262 실기 Hash(해시) 질문

0

82

2

static 변수 질문입니다.

0

63

2

파이썬 4강 질문입니다.

0

72

2

모의고사 1회 3번문제

0

93

3

41강 30:10

0

68

2

이론 공부법 질문 있습니다.

0

92

2

부모의 생성자 관련 질문

0

68

2

시험지 문제에 필기해도 되나요?

0

91

3

41강 11:23

0

60

2

4강파이썬 질문입니다

0

57

2

try-catch 핸들러명

0

68

2

36강 3:48

0

66

2

35강 18:27

0

68

2

자식 코드 내 super() 생략

0

60

2

출력질문

0

78

2