코드업 C언어 기초 100제 - [기초-삼항연산]

6720·2022년 12월 5일
0

CodingTest(코드업)

목록 보기
11/13
post-thumbnail

👨‍🏫 이번 목표

코드업 C언어 기초 100제에서 [기초-삼항연산] 풀기

📒 문제 풀이

1063번

입력된 두 정수 a, b 중 큰 값을 출력하는 프로그램을 작성해보자.

(단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.)

(두 정수가 공백을 두고 입력되며, 두 정수 중 큰 값을 10진수로 출력한다.)

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

int main() {
  int i, j;
  scanf("%d %d", &i, &j);
  printf("%d", i > j ? i : j);
  return 0;
}
  • 정답 여부: O



1064번

입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.

(단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.)

(3개의 정수가 공백으로 구분되어 입력되고, 가장 작은 값을 출력한다.)

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

int main() {
  int i, j, k;
  scanf("%d %d %d", &i, &j, &k);
  printf("%d", (i < j ? i : j) < k ? (i < j ? i : j) : k);
  return 0;
}
  • 정답 여부: O

  • 해설

[정수 3개를 입력받은 3항 연산자]
결론: 2개 먼저 골라낸 후 그 값과 나머지 하나 골라내기
정수가 a b c가 있다고 가정하고 a=10 b=20 c=30을 대입했다고 가정

a < b ? a : b → a와 b 중 더 작은 것을 출력
a or b < c ? a or b : c → 위에서 나온 결과와 c 중 더 작은 것을 출력

a와 b를 비교하는 식 만으로는 a가 더 큰지 b가 더 큰지를 알 수 없음. → a = 10 b =20이라는 값이 존재해야 우리가 알 수 있음.
하지만 이 상태에서는 모르니깐 a < b ? a : b 자체를 하나의 변수로 취급하는 것 → 결국 a와 b에 값이 들어가면 알아서 비교가 될 것.

결국 a < b ? a : b와 c의 크기를 비교해야 함.
→ (a < b ? a : b) < c ? (a < b ? a : b) : c



✨ 후기

1) 3항 연산을 할 때는 식을 그대로 써줘야 하는게 뭔 고등학교 때 하던 수학이 생각났다. 으으

profile
뭐라도 하자

0개의 댓글