책 내용 질문하기
배열 7-이등변 삼각형 만들기 알고리즘 및 c 언어 코드 비교
도서
2019 시나공 정보처리기사 실기(산업기사포함)
페이지
373
조회수
144
작성일
2019-08-21
작성자
탈퇴*원
첨부파일

안녕하세요, 배열 알고리즘 및 C 언어 코드 관련 질문이 있어 글 남겨 드립니다.

질문할 내용은 L(행의 시작)과 E(행의 끝)입니다.

 

1. 알고리즘

L : (COL+1)-J

E : J+(COL-1)

 

2. C언어 코드

L : COL-(J+1)

해설 : 열에서 행의 시작 위치는 열이 증가할 때마다 증가한 열의 수만큼 줄어 들어 "COL-J"가 되어야 하지만 배열의 위치가 0부터 시작하기 때문에 "COL-(J+1)이 된다.

E : (J-1)+COL

해설 : 행의 끝 위치는 회전수를 나타내는 열번호에 일정한 크기(열의 크기보다 1 작은 크기)가 더해져야 하지만 배열의 위치가 0부터 시작하기 때문에 회전 수를 나타내는 (열번호-1)에 열의 크기가 더해진 (J-1)+COL이 된다.

 

두 경우 모두 실제 디버깅을 통해 값이 도출되는 것을 알 수는 있으나, 해당 부분이 빈칸으로 나왔을 경우 답을 찾는 과정이 이해가 되지 않습니다.

우선 알고리즘을 알고 있다고 생각하고 C언어 코딩으로 갔을 때, COL-1=COL과 같기 때문에

L =(COL-1+1)-J=COL-J이 되고, 여기서 배열의 위치가 0부터 이므로 L : COL-(J+1)이 된다.

E또한 E =J+(COL-1-1)이 되어 J+(COL-2)가 되고 배열의 위치가 0부터 이므로 J+1+(COL-2)이 되어 (J-1)+COL

 

위와 같이 푸는 것이 맞는 것이 아니라면, 어떤 식으로 도출하는 것인 지 설명 부탁 드리겠습니다.

 

 

 

 

 

답변
2019-08-22 14:30:27

안녕하세요 길벗수험서 운영팀입니다.

 

먼저 회원님의 문제 해결방법 또한 정답임을 알려드립니다.

 

다만 너무 순서도에 치중하여 해석하고 계신 것 같아 보입니다.

 

이러한 문제의 경우, 순서도를 떠나 배열 변수의 값 변화와, 변수 k가 배열에 삽입되는 시점의 각 배열 위치값을 함께 두고 비교하면 생각보다 쉽게 구할 수 있습니다.

 

해당 알고리즘은 배열의 좌측에서 우측으로 진행되는 4회를 for(j)문으로 구성하고, 시작위치(L)와 끝위치(e)를 구해 k를 삽입합니다.

j가 0부터 삽입되니 각 반복에서 배열은 다음과 같은 위치에 값이 삽입되겠네요.

 

1회 - j=0 : L=3, e=3

2회 - j=1 : L=2, e=4 

3회 - j=2 : L=1, e=5 

4회 - j=3 : L=0, e=6

 

위의 값 변화는 아래와 같이 바꾸어 볼 수 있습니다.

 

1회 - j=0 : L=3, e=3

2회 - j=1 : L=3-1, e=3+1 

3회 - j=2 : L=3-2, e=3+2 

4회 - j=3 : L=3-3, e=3+3

 

위에서 L과 e는 중간값 3을 기준으로 감소, 증가 하는 값이라고 알 수 있죠.

중간값은 행의 -1이 되겠네요. 열이 구할 때 '행*2-1'을 수행했으니까요.

그렇다면 중간값은 col-1, 증감되는 값은 배열 변수는 j를 활용하면 되겠네요. 

 

L=(col-1)-j

e=(col-1)+j

 

이렇게 답이 도출되네요.

(교재와 형태만 다를 분 같은 식입니다.)

 

행복한 하루되세요 :)

  • 관리자
    2019-08-22 14:30:27

    안녕하세요 길벗수험서 운영팀입니다.

     

    먼저 회원님의 문제 해결방법 또한 정답임을 알려드립니다.

     

    다만 너무 순서도에 치중하여 해석하고 계신 것 같아 보입니다.

     

    이러한 문제의 경우, 순서도를 떠나 배열 변수의 값 변화와, 변수 k가 배열에 삽입되는 시점의 각 배열 위치값을 함께 두고 비교하면 생각보다 쉽게 구할 수 있습니다.

     

    해당 알고리즘은 배열의 좌측에서 우측으로 진행되는 4회를 for(j)문으로 구성하고, 시작위치(L)와 끝위치(e)를 구해 k를 삽입합니다.

    j가 0부터 삽입되니 각 반복에서 배열은 다음과 같은 위치에 값이 삽입되겠네요.

     

    1회 - j=0 : L=3, e=3

    2회 - j=1 : L=2, e=4 

    3회 - j=2 : L=1, e=5 

    4회 - j=3 : L=0, e=6

     

    위의 값 변화는 아래와 같이 바꾸어 볼 수 있습니다.

     

    1회 - j=0 : L=3, e=3

    2회 - j=1 : L=3-1, e=3+1 

    3회 - j=2 : L=3-2, e=3+2 

    4회 - j=3 : L=3-3, e=3+3

     

    위에서 L과 e는 중간값 3을 기준으로 감소, 증가 하는 값이라고 알 수 있죠.

    중간값은 행의 -1이 되겠네요. 열이 구할 때 '행*2-1'을 수행했으니까요.

    그렇다면 중간값은 col-1, 증감되는 값은 배열 변수는 j를 활용하면 되겠네요. 

     

    L=(col-1)-j

    e=(col-1)+j

     

    이렇게 답이 도출되네요.

    (교재와 형태만 다를 분 같은 식입니다.)

     

    행복한 하루되세요 :)

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.