본문 바로가기

문제풀이

[SWEA]8338 계산기 논리적으로 맞고 이와 비슷한 코드가 성공한 걸 봤는데 이건 항상 런타임 에러가 발생한다 #include int main(void) { int test_case, T; int sum, n; int arr[10]; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1; test_case
[SWEA]5515 2016년 요일 맞추기 날짜는 결국 1년 중 며칠이 지났는지를 달(1월, 2월 등)로 나눈 것이다. 구할 날짜가 1년 중 며칠인지 구하고 7로 나누면 나머지를 통해 무슨 요일인지 확인할 수 있다. 여기서는 1일이 금요일이므로 3을 더해 나머지 값을 조정한다. #include int main(void) { int test_case, m, d; int T; int arr[12]= {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1; test_case
[SWEA]7532 세영이의 SEM력 연도 쉬워보이지만 진짜 수없이 실패했다. 결국 문제를 해결한 방식은 다음과 같다. k = 365*x+s = 24*y+e = 29*m+m 의 등식을 만들었다. 그리고 x를 하나씩 증가하면서 비교하려 했는데 x++ 와 k+=365는 동일한 값이므로 k에 365를 더해 변수를 줄였다. #include int main(void) { int test_case, s, e, m, k; int T; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1; test_case
[SWEA]8016 홀수 피라미드 자꾸 수학 문제 푸는 거 같은데... 홀수의 피라미드이므로 자연수 피라미드에 2*n+1를 했다고 생각할 수 있다. 1 2 3 4 5 6 7 8 9 자연수 피라미드는 다음과 같이 나오는데 잘 관찰을 해보면 n층의 제일 오른쪽 숫자는 n^2, 제일 왼쪽 숫자는 (n-1)^2+1라는 걸 알 수 있다. 이 두 숫자에 2를 곱하고 1을 더하면 답을 출력할 수 있다. +) N의 범위가 10의 9승이므로 int(-10^28 ~ 10^28)의 범위에 완전히 속하지 않는다. 따라서 long 또는 long long 타입을 써야 한다. #include int main(void) { int test_case; int T; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1;..
[SWEA]7728 다양성 측정 0부터 9까지를 대표하는 배열을 만들고 테스트 케이스를 끝자리부터 한 자리씩 비교합니다. 한 자리 수에 해당하는 배열 칸에 그 숫자가 없으면 카운트 수를 증가시킵니다. #include int main(void) { int test_case; int T; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1; test_case 0) { if (dif[t %10-1] == 0) { dif[t%10-1]++; c++; } t /=10; } printf("#%d %d\n", test_case, c); } return 0; //정상종료시 반드시 0을 리턴해야 합니다. }
[SWEA]3456 직사각형 길이 찾기 만약 a와 b가 다르다면 나머지 변의 길이는 a의 길이 또는 b의 길이인데 c의 길이가 a와 동일한지, b와 동일한지 모르므로 (변의 길이의 합) - (c의 길이)를 하면 d가 나온다 a와 b가 같다면 정사각형일수도 있지만 c와 d만 같을수도 있다. 그럴 경우에는 나머지 한 변의 길이는 c의 길이가 된다. #include int main(void) { int test_case; int T; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1; test_case
[SWEA]8500 극장 좌석 이 문제는 결국 각 좌석 Ai들의 합에 Ai의 최댓값과 N을 더하면 되는 문제이다. #include int main(void) { int test_case; int T; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1; test_case
[SWEA]7732 시간 개념 전부 초로 바꾼 다음 차를 구하고 hh:mm:ss 서식으로 출력했다. printf 함수 서식에서 %과 d 사이에 0(채울 숫자)과 2(채울 자리수)를 입력하면 두 자리로 출력할 수 있다. #include int main(void) { int test_case, h, m, s, t1, t2, r; int T; setbuf(stdout, NULL); scanf("%d", &T); for (test_case = 1; test_case t2) ? (t2-t1+86400) : (t2-t1); printf("#%d %02d:%02d:%02d\n", test_case, (r/3600), ((r%3600)/60), ((r%3600)%60)); } return 0; //정상종료시 반드시 0을 리턴해야 합니다. }