해결된 질문
작성
·
15
0
질문은 동영상 강의에 들어가서 오른쪽에 커뮤니티 버튼을 통해 해주세요. 그래야
어떤 강좌에서 질문하셨는지 알 수 있습니다.
영상에서 몇 분 몇 초 대를 알려주셔야 제가 한 번에 질문 내용 확인이 가능합니다.
이미 다른 누군가가 질문을 한 이력이 있을 수 있습니다. 질문 게시판을 한 번 확인 부탁 드립니다.
학교의 과제나 타 강사의 코드 등 외부 수업 자료에 대해서는 답변하지 않습니다.
제가 다루는 커리큘럼 외의 이론이나, 너무 디테일한 컴퓨터 이론에 대해서는 답변 드리지 않습니다.
시험에 안 나오는 경우가 많고, 나와 봤자 1문제 나오는데 외워야 할 부분이 많은 것 등 (예시: 서브넷 마스크 계산)
질문을 올릴 때 이 글은 모두 지우고 내용을 입력해주세요.
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로 나와야하지 않나?라는 생각이 듭니다.
답변 2
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]가 정답입니다.
추가로, 질문자님께서 올리신 코드를 직접 돌려본 결과입니다.
0
안녕하세요, 인프런 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회 첫번째문제 질문: 이 질문에서는 모듈로 연산과 관련된 논의가 포함되어 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
제가 질문을 살짝 착각했더라고요 감사합니다.