코드업 C언어 기초 100제 - [기초-반복실행구조]

6720·2022년 12월 5일
0

CodingTest(코드업)

목록 보기
13/13
post-thumbnail

👨‍🏫 이번 목표

코드업 C언어 기초 100제에서 [기초-반복실행구조] 풀기

📒 문제 풀이

1071번

0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.

(단, 개수를 알 수 없는 정수가 순서대로 입력되며, 입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0은 출력되지 않도록 한다.)

조건1: while(), for(), do~while() 등의 반복문 사용 불가능.

  • 내가 쓴 답 (답을 봐버림)
#include <stdio.h>

int main() {
  int i;
    reload:
      scanf("%d", &i);
      if (i != 0) {
        printf("%d\n", i);
        goto reload;
      }
  return 0;
}



1072번

n개의 정수를 순서대로 입력할 때 n개의 입력된 정수를 순서대로 출력해보자.

(단, 첫 줄에 정수의 개수 n이 입력되며, 두 번째 줄에 n개의 정수가 공백을 두고 입력된다. n개의 정수는 한 개씩 줄을 바꿔 출력한다.)

조건1: while(), for(), do~while() 등의 반복문 사용 불가능.

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int n, i;
  scanf("%d", &n);

  reload:
    if(n-- != 0) {
        scanf("%d", &i);
        printf("%d\n", i);
        goto reload;
    }
  return 0;
}
  • 정답 여부: O

정답은 맞긴 했는데 scanf가 왜 1 2 3 4 5를 다 담는게 아니라 1 2 이렇게 따로 담는지 이해가 안갔음.

  • 해설: scanf는 공백을 문자열의 끝으로 인식하기 때문에 공백 문자 뒤의 내용이 모두 잘리게 됨. (결국 scanf의 특성이라 외워야 함.)

반복문 안에 scanf를 넣고 안에 1 2 3 4 5를 입력한다고 할 때, 첫 번째 반복에서는 첫번째 공백 앞부분에 있는 1만을 출력함.
그 다음의 반복에서는 두 번째 공백 앞부분에 있는 2를 출력하는데, 그 앞에 있는 1의 경우는 첫번째 반복에서의 scanf로 인해 잘리게 되므로 2만 출력함. → 그런식으로 한글자씩 출력됨.

사실 아직 이해 안감



1073번

0이 아니면 입력된 정수를 출력하고, 0이면 출력을 중단하기

(단, 정수가 순서대로 입력되지만 개수는 알 수 없고, 입력된 정수가 줄을 바꿔 하나씩 출력되도록 함.)

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int n;
  scanf("%d", &n);
  
  while(n != 0) {
    printf("%d\n", n);
    scanf("%d", &n);
  }
  return 0;
}
  • 정답 여부: O



1074번

정수(1~100) 1개가 입력되었을 때 카운트다운을 출력해보자.

(단, 1씩 줄이면서 한 줄에 하나씩 1이 될 때까지 출력한다.)

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int n;
  scanf("%d", &n);
  
  while(n != 0) {
    printf("%d\n", n);
    n -= 1;
  }
  return 0;
}
  • 정답 여부: O



1075번

정수(1~100) 1개가 입력되었을 때 카운트다운을 출력해보자.

(단, 1씩 줄이면서 한 줄에 하나씩 0이 될 때까지 출력하며, 입력한 수를 제외하고 출력한다.)

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int n;
  scanf("%d", &n);
  
  while(n > 0) {
    n -= 1;
    printf("%d\n", n);
  }
  return 0;
}
  • 정답 여부: O



1076번

영문자(a~z) 1개가 입력되었을 때 그 문자까지의 알파벳을 순서대로 출력해보자

(단, a부터 입력한 문자까지 순서대로 공백을 두고 출력한다.)

  • 내가 쓴 답
#include <stdio.h>

int main() {
  char n;
  char i='a';
  scanf("%c", &n);
  
  while (i < n + 1) {
    printf("%c ", i);
    
    i++;
  }
  
  return 0;
}
  • 정답 여부: O



1077번

정수(0~100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자

(단, 0부터 그 수까지 줄을 바꿔 한 개씩 출력한다.)

  • 내가 쓴 답
#include <stdio.h>

int main() {
  int n;
  int i = 0;
  scanf("%d", &n);
  
  while(i <= n) {
    printf("%d\n", i);
    i += 1;
  }
  return 0;
}
  • 정답 여부: O



✨ 후기

1) 코드업이 다 좋은데 문제 설명에 답이 써져있는 경우가 많아서.. 저런건 토글로 가려주는 기능이 있으면 좋을텐데..

profile
뭐라도 하자

0개의 댓글