Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
Tags
- BOJ Python
- 백준
- 숙명여자대학교 정보보안동아리
- 숙명여자대학교 정보보안 동아리
- 머신러닝
- XSS Game
- 자료구조 복습
- HTML
- 기계학습
- 생활코딩
- WarGame
- 파이썬
- C언어
- siss
- 풀이
- PHP 웹페이지 만들기
- Javascript
- 드림핵
- hackctf
- c
- c++
- BOJ
- 웹페이지 만들기
- The Loard of BOF
- Sookmyung Information Security Study
- SWEA
- lob
- hackerrank
- Python
- CSS
Archives
- Today
- Total
혜랑's STORY
[여름방학 6주차 C과제] 본문
#SWEA 1284 : 수도 요금 경쟁
- 풀이
A사 요금 : 1리터 당 요금(P) * 사용한 수도의 양(W)
B사 요금
(1) 사용한 수도의 양(W)이 R리터 보다 많은 경우 : R리터 이하 요금(Q) + 사용한 수도에서 R리터를 제외한 양(W-R) * 1리터 당 요금(S)
(2) 사용한 수도의 양(W)이 R리터와 같거나 적은 경우 : R리터 이하 요금(Q)
#include <stdio.h>
int A(int P, int W) {
return P * W;
}
int B(int Q, int R, int S, int W) {
if (W > R)
return Q + (W - R) * S;
else
return Q;
}
int main() {
int t;
scanf_s("%d", &t);
for (int i = 1; i <= t; i++) {
int P, Q, R, S, W;
scanf_s("%d %d %d %d %d", &P, &Q, &R, &S, &W);
if (A(P, W) > B(Q, R, S, W))
printf("#%d %d\n", i, B(Q, R, S, W));
else
printf("#%d %d\n", i, A(P, W));
}
return 0;
}
- 실행결과
#SWEA 1974 : 스도쿠 검증
- 풀이
먼저 같은 줄에서 1에서 9까지의 숫자들을 한 번씩 넣었는지 확인하기 위해서 정답인 줄을 다 합한 45와 문제에 주어진 줄의 합이 45와 같은지 확인한다. 마찬가지로 3*3의 숫자의 합이 45가 되는지 확인하여 45와 같지 않다면 return 0을 보내고 모두 만족시킨다면 return 1을 보낸다.
[줄을 검사하는 코드]
이중for문을 이용하여 x[i][j](행)와 x[j][i](열)의 총 합이 45인지 확인한다.
//한 줄 검사
for (int i = 0; i < 9; i++) {
int vsum = 0;
int hsum = 0;
for (int j = 0; j < 9; j++) {
vsum += x[i][j];
hsum += x[j][i];
}
if (vsum != 45) return 0;
if (hsum != 45) return 0;
}
[3x3을 검사하는 코드]
다중 for문을 이용하여 위의 방식과 마찬가지로 칸의 총 합이 45인지 확인한다. 이때, x[i*3+k][j*3+l]은 i와 j의 값에 따라 몇 번째 칸인지 짐작하여 볼 수 있다.
//3x3 검사
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
int sum = 0;
for (int k = 0; k < 3; k++) {
for (int l = 0; l < 3; l++) {
sum += x[i * 3 + k][j * 3 + l];
}
}
if (sum != 45) return 0;
}
}
[전체 코드]
#include <stdio.h>
int x[9][9];
int sudoku() {
//한 줄 검사
for (int i = 0; i < 9; i++) {
int vsum = 0;
int hsum = 0;
for (int j = 0; j < 9; j++) {
vsum += x[i][j];
hsum += x[j][i];
}
if (vsum != 45) return 0;
if (hsum != 45) return 0;
}
//3x3 검사
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
int sum = 0;
for (int k = 0; k < 3; k++) {
for (int l = 0; l < 3; l++) {
sum += x[i * 3 + k][j * 3 + l];
}
}
if (sum != 45) return 0;
}
}
return 1;
}
int main() {
int t;
scanf_s("%d", &t);
for (int i = 1; i <= t; i++) {
for (int j = 0; j < 9; j++) {
for (int k = 0; k < 9; k++) {
scanf_s("%d", &x[j][k]);
}
}
printf("#%d %d\n", i, sudoku());
}
return 0;
}
- 실행결과
'2020 SISS 21기 활동 > 여름방학 C언어' 카테고리의 다른 글
[여름방학 8주차 C과제] (0) | 2020.08.30 |
---|---|
[여름방학 7주차 C과제] (0) | 2020.08.20 |
[여름방학 5주차 C과제] (0) | 2020.08.07 |
[여름방학 4주차 C과제] (0) | 2020.08.02 |
[여름방학 3주차 C과제] (0) | 2020.07.24 |