컴퓨터공학 💻 도서관📚
백준 1436번 영화감독 숌 (복습) --> c언어 버전 풀이 아이디어 본문
#include <stdio.h>
int i, temp, check, cnt = 1;
int main(void)
{
int series;
scanf("%d", &series);
if (series == 1) // 첫 번쨰 답 666은 따로 뺌
{
printf("666");
return 0;
}
for (i = 667;; i++) // 그 다음 작은 수 667부터 1씩 증가시킴 , 종료조건 안 씀
{
temp = i; // i의 값으로 잠시 연산을 해야 해서 임시변수 temp 에 i 값 담기
check = 0;
while (temp) // 밑에서 설명
{
if (temp % 1000 == 666) //1000으로 나누는 신의 한 수 테크닉
{ //why? : 두 번째 답부터 네자리 수이기 때문
check = 1; // check 해 놓고 밑에 함수에서 승부 보기
}
temp /= 10; // 10으로 나누는 2번째 신의 한 수 테크닉
} // 이 코드 한 줄로 6660 도 찾을 수 있다.
// 1의 자리가 6인 아닌 6660 같은 수들을 찾기 위해 10으로 나눔
if (check) // 밑에서 설명
{
cnt++;
if (cnt == series)
{
break; // 답이면 break 로 반복문 비상탈출 하기
}
}
}
printf("%d\n", i);
return 0;
}
[ 검색하며 새롭게 알게 된 사실 ]
while (temp) == while(temp != 0) // 이 둘이 같은 의미라고 한다.
if (check) == if(check != 0)
C언어 if문은 0일 때 거짓, 0이 아닐 때 참으로 동작한다
생각 알고리즘
[666은 따로 뺌]
[for문으로 667부터 확인]
[while문으로 temp(= i) 0인지 확인]
[if로 666 있는지 확인]
[참: check 해두기] [거짓: X]
[temp 10으로 나눠서 0 될 때까지 나누기]
[if로 check 해둔 수인지 확인]
[참: cnt 1 증가시키기] [거짓: X]
[if로 cnt가 답이 맞는지 확인]
[참: break로 for문 빠져나오기] [거짓: for문 i++로 다음 수 확인]
[ 2024. 8. 31 토 추가 복습] : 직접 코딩해보고 느낀 점
17번 줄의 while문을 작성하는 것이 제일 어렵다...
파이썬 같이 좋은 내장 함수가 없으니 while문 조건으로 temp가 0이 될 때까지 검사를 진행해야 한다.
그리고 미친 테크닉 2개로 게임을 끝낸다.....
연속된 6 , 666이 있어야 한다는 것을 --> 수학적으로 끌고 와서 1000으로 나눴을 때 나머지가 666이어야 한다는 아이디어를 도출함
6660은 10으로 나누면 666 이 됨 --> 6660이 불편하면 너가 666으로 만들면 됨
굳이 check = 1 이 코드가 필요한가? , check라는 변수가 굳이 필요한가???
라는 의문에서 시작해서 check를 없애고 코드를 바꿔봄 --> 그랬더니 됨
#include <stdio.h>
int i, temp, cnt = 1;
int main(void)
{
int series;
scanf("%d", &series);
if (series == 1) // 첫 번쨰 답 666은 따로 뺌
{
printf("666");
return 0;
}
for (i = 667;; i++) // 그 다음 작은 수 667부터 1씩 증가시킴 , 종료조건 안 씀
{
temp = i; // i의 값으로 잠시 연산을 해야 해서 임시변수 temp 에 i 값 담기
while (temp != 0)
{
if (temp % 1000 == 666) //1000으로 나누는 신의 한 수 테크닉
{ //why? : 두 번째 답부터 네자리 수이기 때문
cnt++;
break;
}
temp /= 10; // 10으로 나누는 2번째 신의 한 수 테크닉
} // 이 코드 한 줄로 6660 도 찾을 수 있다.
// 1의 자리가 6인 아닌 6660 같은 수들을 찾기 위해 10으로 나눔
if (cnt == series)
{
printf("%d\n", i);
break;
}
}
return 0;
}
'💣😝알고리즘 문제(CAM) > C언어' 카테고리의 다른 글
백준 1076번 (0) | 2022.01.19 |
---|