컴공댕이 공부일지
[c언어] 백준 (2577 숫자의 개수 / 13909 창문 닫기 ) 본문
728x90
1. 2577 숫자의 개수
브론즈 2
#include <stdio.h>
int main()
{
int a=0;
int b=0;
int c=0;
int num[10] = {0}; //배열 초기화
scanf("%d %d %d", &a, &b, &c);
int abc=a*b*c; //int의 최댓값 2147483647
while(abc>0) {
num[abc%10]++;
abc/=10;
}
for(int i=0; i<10; i++) {
printf("%d\n",num[i]);
}
return 0;
}
정말 쉬운 문제인데 계속 틀려서 뭔가 했는데 배열을 0으로 초기화했더니 깔끔하게 맞았다..... 우쒸.................
int num[10] = {0} 배열 다 0으로 초기화!
#2. 13909 창문 닫기
실버 5
정답코드
#include <stdio.h>
int main()
{
int n=0;
int window=0;
scanf("%d", &n);
int i=1;
while(i*i<=n) {
window++;
i++;
}
printf("%d",window);
return 0;
}
결국 창문이 열려있는 경우는 제곱수의 창문이다. 그래서 걍 범위 안의 제곱수의 갯수를 더해주면 된다...
처음에 푼 방법은 시간초과가 나서 풀이는 맞는데 그럼 어떻게 풀어야할까 고민하다 서치해보고 제곱수 규칙을 알게되었다....ㅎ 쉬운 길을 어렵게 가고 있었네...
시간 초과난 코드
#include <stdio.h>
int divisor(int x) { //약수 개수 구하는 함수
int count=0;
for(int i=1; i<=x; i++) {
if(x%i==0) {
count++;
}
}
return count;
}
int main()
{
int n=0;
int window=0;
scanf("%d", &n);
for(int i=1; i<=n; i++) {
if(divisor(i)%2!=0) {
window++;
}
}
printf("%d",window);
return 0;
}
약수의 개수가 홀수이면, 열고 닫은 총 횟수또한 홀수번으로 창문이 열린 상태가 되므로 이렇게 풀었는데.. 시간초과가 나버렸다ㅠ 답은 맞게 나왔는데 힝...
728x90
'문제 풀이 > 코딩 문제 풀이 모음' 카테고리의 다른 글
[c언어, java] 백준 (2675 문자열 반복 / 1002 터렛) (0) | 2023.03.21 |
---|---|
[c언어] 백준 (1193 분수찾기) (0) | 2023.03.20 |
[c언어] 백준 (14916 거스름돈 / 11720번 숫자의 합 / 2851 슈퍼마리오) ★그리디 알고리즘 / 아스키코드 문자 연산 (0) | 2023.03.16 |
[c언어] 백준 (1292 쉽게 푸는 문제) 💥💦 (0) | 2023.03.13 |
[c언어] 230310 백준 (10804 카드 역배치) (0) | 2023.03.10 |
Comments