| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 오블완
- 유니티서바이벌게임만들기
- unity게임
- C#문법
- 유니티3dui
- 백준 c++ 공부
- unity3d
- 유니티공부
- c#기본문법
- c#프로그래머스기초문법
- c#문제
- unity3dservival
- unity3d게임만들기
- 백준코테
- c#
- c#코테
- unity게임만들기
- c#코딩기초트레이닝
- 백준코딩테스트
- 유니티
- 바킹독
- 백준 구현문제
- c#기초문법
- Unity
- 백준 C++
- 백준
- 티스토리챌린지
- 유니티게임만들기
- c# c#프로그래머스
- 바킹독알고리즘
- Today
- Total
나 개발자 진짜 되냐?
백준 C++ 2920번 음계 ( if문 두번쓰기 ) 본문

ㅇㅅㅇ
문제 쉽다고 난리 쳤는데
ㅋㅋㅋ
풀수록..? 생각할수록..? 점점 난해해지는 문제..


아니 문제를 보며,
아그냥 오름차순이면 이거고
내림차순이면 저거고
아니면 믹스네
이생각하고.. 시작했는데
이 글자들을.... 한 글자씩 전에 후에 뭐가 들어갔는지 알아야 하는가..? 에 대해
머리가 복잡해지기 시작했다..
그래서 떠올리려고 했던 게..
1. 패턴이 있는가
생각해 보니 8개만 나온 다했으니 8로 해서
for문으로
num [i] = i+1 이 값이 8번 들어있으면 asc인 거고
num [i] = 8-i 이 값이 8번 들어있으면 desc이긴 했다.
패턴이 있는 셈
2. bool값이 필요하긴 하겠다.
하지만 필요하기만 하다고 생각했지
두 개나.. 필요할지..
뭐.. 한 개인지 뭐 배열인지 전혀 몰랐다는 사실..ㅋ
기가 막히게 이상하게 푼 문제를 공유한다.

그걸 왜 공유할까? 싶긴 한데..
모르겠다 그냥 틀린 답을 왜 적었나 싶긴 한데 ㅋㅋㅋ
before after만큼 재밌는 게 없긴 하다.
처참한 엔딩..
이렇게 하니까 뭐 답이 난리가 난다. mix만 나와야 하는데 앞에 de 이런 것도 같이 나오고
아니 나도 틀린 거 아는데..
어떻게 고쳐야 할지 머리가 하얗게 되는걸요..... 흑흑
자,
다음에 답을 공개해 보겠다.
1. 변수

일단 오름이 내림이 두 개가 다 있어줘야 했다.
그 이유는 밑에 공개

하.. 배열 좀 안 썼다고
int n cin >> n num [i] = n 이게 말이 되냐?
나는 진짜 내가 쓰고도 놀랬다.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ...
ha.........
정말 걱정이 많다.. 걱정이 많아..

조건은 이거 하나다.
한 번이라도 다르면 false로 만들어버리기.
사실 가장 헷갈렸던 문제는 여기다

사실 나는 여기서 else if로 썼는데..
왜 if문이 두 개어야 하는 걸까..?! else는 안 되나요?!!
네
안된다입니다.
왜냐면 예를 들어서
i가 8일 경우
위에 식이 맞지 않아서 asc는 false가 되는데
밑에 식을 읽지 못한다.
그럼 그냥 넘어가고 그다음에 i가 7 이어도
asc만 읽고 false만 남긴 채 밑에 식이 넘어간다.
이의 문제점은 사실 desc는 기본값이 참이기 때문에 결국 답은 desc가 나오겠지만
안 읽어서 나온 것이기 때문에 운이 좋아서 답이 나오는 것이다.
그래서
두 가지 식을 비교해야 하기 때문에
if문을 두 번 써야 한다.
if / else if는
조건이 겹치면 안 되고, 한 번에 딱 한 번만 검사할 때 쓰는 것이다.
if / if를 써줘야
조건이 두 개일때 두개 다 실행되면서
검사가 가능하게 된다.

그리고 이제 asc가 참이면 asc 출력
desc가 참이면 des 출력
둘 다 아니면 mix 출력
한 번이라도 어긋나면 위에 식에 의해 false가 되기 때문에,
이렇게 적어줘야 한다.
false가 하나라도 생겼다는 건 123 또는 876이 아니라는 것이기 때문에
mix가 되는 것!

전체 답! ㅎㅋ
if문 두 번 쓰는 게 생각보다 나에게 어렵게 다가왔다.
어쩔 때 if문을 두 번 써야 하고
아닌지... 헷갈릴 때가 많다.....
앞으로 조금씩 나아지길 바란다. ㅎ
오늘 배운 것
매번 두 개 다 검사해야 하기 때문에 if / if
하나만 검사해도 되는 거면if / else if
'C++을 시작해봐요! > 구현문제를 알아보아요!' 카테고리의 다른 글
| 백준 C++ 1193번 분수찾기 ( break, continue ) (0) | 2026.02.10 |
|---|---|
| 백준 C++ 25501번 재귀의 귀재 ( s.length, string_view ) (1) | 2026.02.02 |
| 백준 C++ 1977번 완전제곱수 ( sqrt(a), ceil(x) ) (2) | 2026.01.30 |
| 백준 C++ 1550번 16진수 ( 누적곱, stoi, hex ) (0) | 2026.01.29 |
| 백준 C++ 9093번 단어 뒤집기 ( getline, stringstream ) (1) | 2026.01.28 |
