목록분류 전체보기 (242)
Minwoo Dev.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dvHecb/btsi3wzfCac/0kLXPkfk2KdN7vygnV1A2K/img.png)
지금 Bronze 3 레벨을 풀고 있는데, 뭔가 복잡한 문제들이 많이 보여서 쉬워보이는 별 문제부터 먼저 하는 중. #include int main(void) { int n = 0; scanf("%d", &n); for (int i = 1; i < n + 1; i++) { for (int j = 0; j < n - i; j++) { printf(" "); } for (int j = 0; j < 2 * i - 1; j++) { printf("*"); } printf("\n"); } return 0; } 힌트는 문제에 제시된 2n-1 개. 그리고 한 가지 헷갈릴 수 있는 부분은 별을 출력한 후 공백을 또다시 출력하지 않는다는 것. 따라서 공백을 두 번 따로 출력하는 방식이 아닌 공백 1번과 별 1번으..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/brAnfL/btsi2N9lCv2/YNLW8I9KK7vyfJub9y9Iek/img.png)
이젠 익숙한... 그냥 다 풀어서 올려버려야지 #include int main(void) { int n = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j < i; j++) { printf(" "); } for (int j = 0; j < n - i; j++) { printf("*"); } printf("\n"); } return 0; }
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eag1cI/btsiQINE8ws/wJ4PIBU7Hq8gxZVrzV9VbK/img.png)
while 문을 사용하는 게 낯설어서 풀기 힘들었다. #include int chk(int n); int main(void){ int n=0,m=0; int CM=0; while(scanf("%d",&n) && n!=0){ CM = 1; while(n!=0){ m = n%10; CM += chk(m); n/=10; } printf("%d\n",CM); } return 0; } int chk(int n){ if(n==0){ return 5; } else if(n==1){ return 3; } else{ return 4; } } 참고하고 푼 문제이므로 복습하기.
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/2wH5p/btsiFCocTyy/xRGRsWVBEKbStktfcaNEH0/img.png)
점을 입력받아 직사각형의 크기를 계산하는 문제이다. #include int main(void) { struct coma { // 점을 표현하기 위해 구조체 사용 int x; int y; }; int n = 0; struct coma a[100001]; // n값이 최대 100000임 struct coma rst; // 결과값을 나타내는 점 struct coma max; // 제일 큰 max값에 해당하는 점을 담는 변수 struct coma min; // 제일 작은 min값에 해당하는 점을 담는 변수 max.x = -10001; // 최솟값 max.y = -10001; // 최솟값 min.x = 10001; // 최댓값 min.y = 10001; // 최댓값 scanf("%d", &n); // n 값 입력..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cIYdFf/btsiNcoWeE5/3LVspXj7EegduD47j6Nyx1/img.png)
30초마다 10원씩 청구되는 '영식 요금제' 와 60초마다 15원씩 청구되는 '민식 요금제' 중 어떤 요금제가 저렴한지 계산하는 문제이다. 영식 요금제는 29초까지 10원, 30~59초까지 20원 과 같은 형식이고 민식 요금제는 59초까지 15원, 60~119원까지 30원이다. 조금 쉽게 판단하기 위해 영식 요금제와 민식 요금제를 각각 계산하여 각 요금제에 해당하는 금액을 나중에 곱하였다. #include int main(void) { int n; // 통화시간의 개수 int val[21]; // 각 개수별 통화시간 scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &val[i]); } int payM = 0; // 민식 요금제로 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cjWqBc/btsiNvPo7LG/aKuDb3zw6hEdvoCOmgpgmk/img.png)
도장이 5개면 500원 할인 도장이 10개면 10% 할인 도장이 15개면 2000원 할인 도장이 20개면 25% 할인 하지만 도장의 개수가 만약 20개라면 25% 할인과 2000원 할인 중 더 많은 할인이 들어가는 것을 선택해야 할 것이다. 다행히도, 도장을 사용하는 개수에는 조건을 달지 않았다. 그럼 그냥 비교해서 계산하는 수학 문제이다. #include int main(void) { int n = 0; // 쿠폰 개수 int price = 0; // 할인 전 금액 int rstPrc = 0; // 결론적으로 지불할 금액 scanf("%d", &n); scanf("%d", &price); if (n >= 20) { // 도장이 20개 이상일 때 if ((price * 0.75) < (pric..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dM45e2/btsiQ6gyZoy/Yizs0wqRPTSeDJQXbFyUHk/img.png)
문자를 대소문자 구분없이 입력받아서 소문자로 출력하는 문제이다, 간과한 사실은 대소문자가 섞여있는 문자열을 통째로 tolower 함수에 넣으려 했다가 실패했다는 사실.. 하나하나 문자열을 문자로 분석하여 풀이해야 한다. #include #include int main(void) { int n = 0; char Si[101][21]; /*문자열 (최대 정수 100과 최대 글자 수 20을 고려한 크기)*/ scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%s", Si[i]); /*Si함수의 행렬 중 행만을 언급함. Si[i][1]~Si[i][21] 칸을 이야기함*/ } int j = 0; for (int i = 0; i < n; i++) { while (S..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bemYpN/btsiOjVuYz1/OoxqoCdmsOJsdbeg6vBud1/img.png)
문자열에 숫자를 붙여서 출력하는 문제이다. 먼저 문자열을 입력받고, 그 문자열의 앞에 숫자를 추가하는 방법과 따로 출력하여 붙어있는 것처럼 보이는 방법 두 가지가 생각났는데, 일단 후자의 방법을 선택하여 문제를 풀었다. C언어에서는 문자열을 입력받기 위해 배열을 사용해야 한다. 그리고 나는 여러 개의 문자열을 입력받기 위해 이중 배열을 사용하여 한 변수에 입력값을 모두 저장하고자 하였다. #include #include int main(void) { int n = 0; //처음에 입력받을 변수 char a[99][52]; //문자열을 입력받을 배열 scanf("%d", &n); getchar(); for (int i = 0; i < n; i++) { fgets(a[i], sizeof(a[i])..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cE30dN/btsiO5P95qF/mR3mhKX1LcbsZSnRnf4zMk/img.png)
별 그리기 정말 기본적인 코딩 반복문 연습문제인데 군대에서 뇌가 너무나 굳어버렸나보다. 컴퓨터로 이렇게 할 일이 잘 없다보니... 근무 잠 근무 잠 어쨋든 조금이라도 다시 되새기며 해보기로 다짐했다. #include void DrawStar1(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < i + 1; j++) { printf("*"); } for (int j = 0; j < n - i - 1; j++) { printf(" "); } printf("\n"); } } void DrawStar2(int n) { for (int i = 0; i < n; i++) { for (int j = 0; j < n - i; j++) { printf("*")..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bqP9Rh/btsiPiu0zE9/anwdkWuud896c5ySeKnShk/img.png)
흔한 별 찍기 문제. 군대 와서 뇌가 굳은 게 맞는 거 같다. 다시 차근차근 익혀야겠다는 생각이 드는 문제. #include int main(void) { int n = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { for (int j = 0; j < n - i - 1; j++) { printf(" "); } for (int j = 0; j < i + 1; j++) { printf("*"); } printf("\n"); } return 0; } 반복문의 성질을 정확히 이해하면 굉장히 간단히 풀리는 문제다 반성하자.