작성자 없음
작성자 정보가 삭제된 글입니다.
해결된 질문
작성
·
19
0
#include <stdio.h>
int main(void) {
int list[5][5] = {0};
int count = 0;
for (int i=0; i<5; ++i)
{
if(i % 2 == 0) { // 짝수 행: 왼→오
for (int j=0; j<5; ++j) {
list[i][j] = ++count;
}
}
else { // 홀수 행: 오→왼
for (int j=4; j>=0; --j) {
list[i][j] = ++count;
}
}
}
// 출력
for(int i=0;i<5;i++){
for(int j=0;j<5;j++){
printf("%d\t", list[i][j]);
}
printf("\n");
}
return 0;
}
저는 4 - j가 생각 안나서 반복문 하나를 더써서 처리를 했는데.. 비효율적이겠죠? 반복문은 최대한 적게 쓰는게 더 나은가요?
답변 2
0
반복문을 줄이면 코드 길이가 줄어들수 있지만 논리적으로는 크게 달라지는 것도 아닙니다. 어떤 경우에는 이것이 더 가독성이 높을 수도 있다 생각합니다. 그리고 이 정도의 코드는 소위 효율을 논할 정도의 복잡성이 없습니다. 지금은 읽기 좋은 코드가 좋은 코드라 할 수 있습니다. 진정한 효율은 향후 컴파일러 최적화 등을 공부하는 시점에 생각해도 충분합니다. 잘 하고 계신 겁니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다. bhg8411님.
질문 주신 교차 출력을 구현하는 코드에 대해서 설명드리겠습니다.
코드의 핵심은 배열의 짝수 행에서는 왼쪽에서 오른쪽으로 값을 채우고, 홀수 행에서는 오른쪽에서 왼쪽으로 값을 채워가는 방식입니다. 현재 사용하신 방법도 무난하게 작동하며, 코드 역시 직관적입니다. 반복문을 두 번 사용하는 방식도 이해하기 쉽고 문제 없지만, 반복문을 하나 줄일 수 있다면 성능 상 이점이 있을 수 있습니다.
하지만 여기서 중요한 점은 코드의 “가독성”입니다. 성능 최적화가 필요한 상황이 아니라면, 다른 개발자나 미래의 자신이 이 코드를 쉽게 수정하고 이해할 수 있도록 코드의 가독성을 확보하는 것이 중요합니다.
‘4 - j’ 와 같은 연산을 사용하여 반복문을 하나로 줄이는 방법도 있겠지만, 이는 가독성을 떨어뜨릴 수 있습니다. 따라서, 성능이나 코드 최적화가 절대적으로 중요한 상황이 아니라면 현재 코드처럼 명확하고 가독성을 확보하는 방향도 좋은 선택입니다.
관련된 질문과 설명은 다음 링크에서 확인할 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.