나의 자유노트
백준 3003번 [킹, 퀸, 룩, 비숍, 나이트, 폰] - if ~ else 조건문을 이용해 풀이. 본문
문제.
내가 틀린 이유.
: 우선 이 문제는 조건문을 이용하지 않아도 풀 수 있다.
하지만 나는 조건문을 사용하도록 유도하는 문제라 생각하여 조건문을 이용해야한다는 강박에 있었고(?)
그 결과 풀어냈다.
(조건문 이외에 더 쉽게 푸는 방법도 많다. 이건 따로 찾아보시거나 스스로 나의 풀이를 참고하여 생각해보시길.)
또한 수학적 사고가 부족하여 king의 변수 - 1 이런식으로 고집했다.
만약 수학적으로 뛰어났다면 금방 변수부분이 고정값이 아니라 변하는 부분에 와야한다고 생각했을거다.
ex: king - 1 (x) : king에 어떤 수를 넣더라도 문제조건에 맞지 않는다.
1 - king (o) : 조건에 부합한다.
정말 수학의 중요성을 느낀다.
풀이.
#include <stdio.h>
int main() {
int king, q, l, bi, kn, p;
int a, b, c, d, e, f;
scanf("%d %d %d %d %d %d", &king, &q, &l, &bi, &kn, &p);
if (king == 1) {
a = 0;
}
else if (king < 1) {
a = 1 - king;
}
else {
a = 1 - king;
}
if (q == 1) {
b = 0;
}
else if (q < 1) {
b = 1 - q;
}
else {
b = 1 - q;
}
if (l == 2) {
c = 0;
}
else if (l < 2) {
c = 2 - l;
}
else {
c = 2 - l;
}
if (bi == 2) {
d = 0;
}
else if (bi < 2) {
d = 2 - bi;
}
else {
d = 2 - bi;
}
if (kn == 2) {
e = 0;
}
else if (kn < 2) {
e = 2 - kn;
}
else {
e = 2 - kn;
}
if (p == 8) {
f = 0;
}
else if (p < 8) {
f = 8 - p;
}
else {
f = 8 - p;
}
printf("%d %d %d %d %d %d", a, b, c, d, e, f);
return 0;
}
//상당히 비효율적인 흠흠;; 하지만 나의 코드로는 같은 수가 되었을때 0을 출력할 수있다!
이외에도 간단한 방법 많은 방법이 있으니 직접 찾아보길 바란다.
다양한 코드를 보며 많은 생각을 갖게해준다...
직접 찾아본 또 다른 좋은 풀이 (이건 내가 따로 보고싶어서 올림..)
#pragma warning(disable:4996)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
int main() {
int k, q, l, b, n, p;
scanf("%d %d %d %d %d %d", &k, &q, &l, &b, &n, &p);
printf("%d %d %d %d %d %d", 1-k, 1-q, 2-l, 2-b, 2-n, 8-p);
return 0;
}
//백준 아이디 dign3050님 풀이.
'IT > 알고리즘 문제 풀이' 카테고리의 다른 글
백준 10171번 [고양이] - 풀이. (0) | 2022.11.16 |
---|---|
백준 2588번 [곱셈] - 풀이. ( / 와 %를 이해하자.) (0) | 2022.11.15 |
백준 18108번 [1998년생인 내가 태국에서는 2541년생?!] - 간단 풀이 (0) | 2022.11.15 |
백준 10869번 [사칙연산] - 간단 풀이 (0) | 2022.11.15 |
백준 10926번 [??!] - 간단 풀이 (0) | 2022.11.15 |
Comments