#include <something.h>

  • 컴파일러가 설치되어 있는 폴더에서 헤더파일을 찾아라.

#include “something.h”

  • 개발자가 사용하고 있는 프로젝트 폴더나 개발자가 추가포함 디렉터리로 지정해준 경로에서 헤더파일을 찾아라.

codeup 기초 100제

ProjectH4C에 멘토로 신청하여 참여하게 되는 좋은 기회를 얻었다.

커리큘럼에 codeup이 존재했는데 codeup은 해본적이 없어서 하루동안 짬내서 도전해봤다.

1001

#include <stdio.h>

int main()
{
    printf("Hello");
    return 0;
}

1002

#include <stdio.h>

int main(){
    printf("Hello World");

    return 0;
}

1003

#include <stdio.h>

int main(){
    printf("Hello\nWorld");

    return 0;
}

1004

#include <stdio.h>

int main(){
    printf("\'Hello\'");

    return 0;
}

1005

#include <stdio.h>

int main(){
    printf("\"Hello World\"");

    return 0;
}

1006

#include <stdio.h>

int main(){
    printf("\"!@#$%%^&*()\"");

    return 0;
}

1007

#include <stdio.h>

int main(){
    printf("\"C:\\Download\\hello.cpp\"");

    return 0;
}

1008

#include <stdio.h>

int main(){
    printf("\u250C\u252C\u2510\n\u251C\u253c\u2524\n\u2514\u2534\u2518");

    return 0;
}

1010

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    printf("%d", num);

    return 0;
}

1011

#include <stdio.h>

int main(){
    char chr;

    scanf("%c", &chr);

    printf("%c", chr);

    return 0;
}

1012

#include <stdio.h>

int main(){
    float f;

    scanf("%f", &f);

    printf("%f", f);

    return 0;
}

1013

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d%d", &num1, &num2);

    printf("%d %d", num1, num2);

    return 0;
}

1014

#include <stdio.h>

int main(){
    char chr1, chr2;

    scanf("%c %c", &chr1, &chr2);

    printf("%c %c", chr2, chr1);

    return 0;
}

1015

#include <stdio.h>

int main(){
    float f;

    scanf("%f", &f);

    printf("%.2f", f);

    return 0;
}

1017

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    printf("%d %d %d", num, num, num);

    return 0;
}

1018

#include <stdio.h>

int main(){
    int h, m;

    scanf("%d:%d", &h, &m);

    printf("%d:%d", h, m);

    return 0;
}

1019

#include <stdio.h>

int main(){
    int y, m, d;

    scanf("%d.%d.%d", &y, &m, &d);

    printf("%04d.%02d.%02d", y, m, d);

    return 0;
}

1020

#include <stdio.h>

int main(){
    int rrnh, rrnt;

    scanf("%d-%d", &rrnh, &rrnt);

    printf("%06d%07d", rrnh, rrnt);

    return 0;
}

1021

#include <stdio.h>

int main(){
    char str[51];

    scanf("%s", str);

    printf("%s", str);

    return 0;
}

1022

#include <stdio.h>

int main(){
    char str[2001];

    fgets(str, 2000, stdin);

    printf("%s", str);

    return 0;
}

1023

#include <stdio.h>

int main(){
    int i, f;

    scanf("%d.%d", &i, &f);

    printf("%d\n%d", i, f);

    return 0;
}

1024

#include <stdio.h>

int main(){
    char str[21];

    scanf("%s", str);

    for(int i=0; i<=21; i++){
        if(str[i] == '\0') break;
        printf("\'%c\'\n", str[i]);
    }    

    return 0;
}

1025

#include <stdio.h>

int main(){
    int num[5], digits=10000;

    scanf("%1d%1d%1d%1d%1d", &num[0], &num[1], &num[2], &num[3], &num[4]);

    for(int i=0; i<5; i++){
        printf("[%d]\n", num[i]*digits);
        digits = digits / 10;
    }

    return 0;
}

1026

#include <stdio.h>

int main(){
    int h, m, s;

    scanf("%d:%d:%d", &h, &m, &s);

    printf("%d", m);

    return 0;
}

1027

#include <stdio.h>

int main(){
    int y, m, d;

    scanf("%d.%d.%d", &y, &m, &d);

    printf("%02d-%02d-%04d", d, m, y);

    return 0;
}

1028

#include <stdio.h>

int main(){
    unsigned int num;

    scanf("%u", &num);

    printf("%u", num);    

    return 0;
}

1029

#include <stdio.h>

int main(){
    double d;

    scanf("%lf", &d);

    printf("%.11lf", d);

    return 0;
}

1030

#include <stdio.h>

int main(){
    long long int n;

    scanf("%lld", &n);

    printf("%lld", n);    

    return 0;
}

1031

#include <stdio.h>
#include <stdlib.h>

int main(){
    int num;

    scanf("%d", &num);    

    printf("%o", num);

    return 0;
}

1032

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);    

    printf("%x", num);

    return 0;
}

1033

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);    

    printf("%X", num);

    return 0;
}

1034

#include <stdio.h>

int main(){
    int num;

    scanf("%o", &num);    

    printf("%d", num);

    return 0;
}

1035

#include <stdio.h>

int main(){
    int num;

    scanf("%x", &num);    

    printf("%o", num);

    return 0;
}

1036

#include <stdio.h>

int main(){
    char chr;

    scanf("%c", &chr);

    printf("%d", chr);

    return 0;
}

1037

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    printf("%c", num);

    return 0;
}

1038

#include <stdio.h>

int main(){
    long long int num1, num2;

    scanf("%lld %lld", &num1, &num2);

    printf("%lld", num1+num2);

    return 0;
}

1039

#include <stdio.h>

int main(){
    long long int num1, num2;

    scanf("%lld %lld", &num1, &num2);

    printf("%lld", num1+num2);

    return 0;
}

1040

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    printf("%d", -num);

    return 0;
}

1041

#include <stdio.h>

int main(){
    char chr;

    scanf("%c", &chr);

    printf("%c", ++chr);

    return 0;
}

1042

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1/num2);

    return 0;
}

1043

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1%num2);

    return 0;
}

1044

#include <stdio.h>

int main(){
    long long int num;

    scanf("%lld", &num);

    printf("%lld", ++num);

    return 0;
}

1045

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d\n%d\n%d\n%d\n%d\n%.2f", num1+num2, num1-num2, num1*num2, num1/num2, num1%num2, (float)num1/(float)num2);

    return 0;
}

1046

#include <stdio.h>

int main(){
    int num1, num2, num3, add;

    scanf("%d %d %d", &num1, &num2, &num3);

    add = num1+num2+num3;

    printf("%d\n%.1f", add, (float)add/3);

    return 0;
}

1047

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    printf("%d", num<<1);

    return 0;
}

1048

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1<<num2);

    return 0;
}

1049

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1>num2);

    return 0;
}

1050

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1==num2);

    return 0;
}

1051

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1<=num2);

    return 0;
}

1052

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1!=num2);

    return 0;
}

1053

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    printf("%d", !num);

    return 0;
}

1054

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1&&num2);

    return 0;
}

1055

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1||num2);

    return 0;
}

1056

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", (num1^num2));

    return 0;
}

1057

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", !(num1^num2));

    return 0;
}

1058

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", !(num1||num2));

    return 0;
}

1059

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    printf("%d", ~num);

    return 0;
}

1060

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1&num2);

    return 0;
}

1061

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1|num2);

    return 0;
}

1062

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1^num2);

    return 0;
}

1063

#include <stdio.h>

int main(){
    int num1, num2;

    scanf("%d %d", &num1, &num2);

    printf("%d", num1>num2?num1:num2);

    return 0;
}

1064

#include <stdio.h>

int main(){
    int num1, num2, num3;

    scanf("%d %d %d", &num1, &num2, &num3);

    printf("%d", (num1<num2?num1:num2)<num3?(num1<num2?num1:num2):num3);

    return 0;
}

1065

#include <stdio.h>

int main(){
    int num[3];

    scanf("%d %d %d", &num[0], &num[1], &num[2]);

    for (int i=0; i<3; i++){
        if (num[i]%2 == 0){
            printf("%d\n", num[i]);
        }
    }

    return 0;
}

1066

#include <stdio.h>

int main(){
    int num[3];

    scanf("%d %d %d", &num[0], &num[1], &num[2]);

    for (int i=0; i<3; i++){
        if (num[i]%2 == 0){
            printf("even\n");
        }
        else {
            printf("odd\n");
        }
    }

    return 0;
}

1067

#include <stdio.h>

int sign(int num){
    if (num>=0){
        printf("plus\n");
    }
    else{
        printf("minus\n");
    }
    return 0;
}

int evenodd(int num){
    if (num%2 == 0){
        printf("even\n");
    }
    else{
        printf("odd\n");
    }
    return 0;
}

int main(){
    int num;

    scanf("%d", &num);

    sign(num);
    evenodd(num);

    return 0;
}

1068

#include <stdio.h>

int main(){
    int result;

    scanf("%d", &result);

    result = result/10;

    if (result >= 9){
        printf("A");
    }
    else if (result >= 7 && result < 9){
        printf("B");
    }
    else if (result >= 4 && result < 7){
        printf("C");
    }
    else if (result >= 0 && result < 4){
        printf("D");
    }
    else {
        printf("input error\n");
    }

    return 0;
}

1069

#include <stdio.h>

int main(){
    char result;

    scanf("%c", &result);

    switch(result){
        case 'A': printf("best!!!"); break;
        case 'B': printf("good!!"); break;
        case 'C': printf("run!"); break;
        case 'D': printf("slowly~"); break;
        default : printf("what?");
    }

    return 0;
}

1070

#include <stdio.h>

int main(){
    int m;

    scanf("%d", &m);

    switch(m){
        case 12: case 1: case 2: printf("winter"); break;
        case 3: case 4: case 5: printf("spring"); break;
        case 6: case 7: case 8: printf("summer"); break;
        case 9: case 10: case 11: printf("fall"); break;
    }

    return 0;
}

1071

#include <stdio.h>

int main(){
    int num;

    while(1){
        scanf("%d", &num);

        if (num == 0) break;

        printf("%d\n", num);
    }

    return 0;
}

1072

#include <stdio.h>

int main(){
    int c, num;

    scanf("%d", &c);

    for (int i=0; i<c; i++){
        scanf("%d", &num);

        printf("%d\n", num);
    }

    return 0;
}

1073

#include <stdio.h>

int main(){
    int num;

    while(1){
        scanf("%d", &num);

        if (num == 0) break;

        printf("%d\n", num);
    }

    return 0;
}

1074

#include <stdio.h>

int main(){
    int c;

    scanf("%d", &c);

    while(c>0){
        printf("%d\n", c--);
    }

    return 0;
}

1075

#include <stdio.h>

int main(){
    int c;

    scanf("%d", &c);

    while(c>0){
        printf("%d\n", --c);
    }

    return 0;
}

1076

#include <stdio.h>

int main(){
    char c, chr='a';

    scanf("%c", &c);

    while(c>=chr){
        printf("%c ", chr++);
    }

    return 0;
}

1077

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    for(int i=0; i<=num; i++) printf("%d\n", i);

    return 0;
}

1078

#include <stdio.h>

int main(){
    int num, sum = 0;

    scanf("%d", &num);

    for (int i=0; i<=num; i+=2) sum+=i;

    printf("%d", sum);

    return 0;
}

1079

#include <stdio.h>

int main(){
    char c;

    while(c!='q'){
        scanf("%c", &c);

        printf("%c", c);
    }

    return 0;
}

1080

#include <stdio.h>

int main(){
    int num, sum=0, i;

    scanf("%d", &num);

    for (i=0; sum<num; i++) sum+=i;

    printf("%d", i-1);

    return 0;
}

1081

#include <stdio.h>

int main(){
    int dice1, dice2;

    scanf("%d %d", &dice1, &dice2);

    for (int i=1; i<=dice1; i++){
        for (int j=1; j<=dice2; j++) printf("%d %d\n", i, j);
    }

    return 0;

1082

#include <stdio.h>

int main(){
    int num;

    scanf("%X", &num);

    for (int i=0x1; i<0x10; i++) printf("%X*%X=%X\n", num, i, num*i);

    return 0;
}

1083

#include <stdio.h>

int main(){
    int num;

    scanf("%d", &num);

    for (int i=1; i<=num; i++){
        if(i%3==0) printf("X ");
        else printf("%d ", i);
    }

    return 0;
}

1084

#include <stdio.h>

int main(){
    int r, g, b, c=0;

    scanf("%d %d %d", &r, &g, &b);

    for(int i=0; i<r; i++){
        for(int j=0; j<g; j++){
            for(int k=0; k<b; k++){
                printf("%d %d %d\n", i, j, k);
                c++;
            }
        }
    }

    printf("%d", c);

    return 0;
}

1085

#include <stdio.h>

int main(){
    float h, b, c, s;

    scanf("%f %f %f %f", &h, &b, &c, &s);

    printf("%.1f MB", (h*b*c*s)/(8*1024*1024));

    return 0;
}

1086

#include <stdio.h>

int main(){
    float w, h, b;

    scanf("%f %f %f", &w, &h, &b);

    printf("%.2f MB", (w*h*b)/(8*1024*1024));

    return 0;
}

1087

#include <stdio.h>

int main(){
    long long int n, sum=0;

    scanf("%lld", &n);

    for(int i=0; sum<n; i++) sum+=i;

    printf("%lld", sum);

    return 0;
}

1088

#include <stdio.h>

int main(){
    int n;

    scanf("%d", &n);

    for(int i=1; i<=n; i++){
        if (i%3 == 0); else printf("%d ", i);
    }

    return 0;
}

1089

#include <stdio.h>

int main(){
    int a, d, n;

    scanf("%d %d %d", &a, &d, &n);

    for (int i=1; i<n; i++){
        a += d;
    }

    printf("%d", a);

    return 0;
}

1090

#include <stdio.h>

int main(){
    long long int a, r, n;

    scanf("%lld %lld %lld", &a, &r, &n);

    for(int i=1; i<n; i++) a=a*r;

    printf("%lld", a);

    return 0;
}

1091

#include <stdio.h>

int main(){
    long long int a, m, d, n;

    scanf("%lld %lld %lld %lld", &a, &m, &d, &n);

    for (int i=1; i<n; i++) a=a*m+d;

    printf("%lld", a);

    return 0;
}

1092

#include <stdio.h>

int main(){
    int man1, man2, man3, big, result;

    scanf("%d %d %d", &man1, &man2, &man3);

    if (man1>man2){
        if(man1>man3) big=man1;
        else big=man3;
    }
    else {
        if(man2>man3) big=man2;
        else big=man3;
    }

    for (int i=1;;i++) {
        result=big*i;
        if (result%man1==0&&result%man2==0&&result%man3==0) break;
    }

    printf("%d", result);

    return 0;
}

1093

#include <stdio.h>

int main(){
    int c, num[24]={0,};

    scanf("%d", &c);

    for(int i=0; i<c; i++){
        scanf("%d", &num[0]);
        num[num[0]]++;
    }

    for(int i=1; i<24; i++) printf("%d ", num[i]);

    return 0;
}

1094

#include <stdio.h>

int main(){
    int c, num[10000];

    scanf("%d", &c);

    for(int i=0; i<c; i++) scanf("%d", &num[i]);

    for(int i=c-1; i>=0; i--) printf("%d ", num[i]);

    return 0;
}

1095

#include <stdio.h>

#define min(x,y) (x)<(y)?(x):(y)

int main(){
    int c, num, result=23;

    scanf("%d", &c);

    for(int i=1; i<c; i++) {
        scanf("%d", &num);
        result = min(num,result);
    }

    printf("%d", result);

    return 0;
}

1096

#include <stdio.h>

int main(){
    int c, x, y, board[20][20]={0,};

    scanf("%d", &c);

    for(int i=0; i<c; i++){
        scanf("%d %d", &x, &y);
        board[x][y]=1;
    }

    for(int i=1; i<20; i++){
        for(int j=1; j<20; j++) printf("%d ", board[i][j]);
        printf("\n");
    }

    return 0;
}

1097

#include <stdio.h>

int main(){
    int c, x, y, board[20][20];

    for(int i=1; i<20; i++){
        for(int j=1; j<20; j++) scanf("%d", &board[i][j]);
    }

    scanf("%d", &c);

    for(int i=0; i<c; i++){
        scanf("%d %d", &x, &y);
        for(int j=1; j<20; j++){
            board[x][j] = !board[x][j];
            board[j][y] = !board[j][y];
        }
    }

    for(int i=1; i<20; i++){
        for(int j=1; j<20; j++) printf("%d ", board[i][j]);
        printf("\n");
    }

    return 0;
}

1098

#include <stdio.h>

int main(){
    int w, h, n, l, d, x, y, board[100][100];

    scanf("%d %d", &w, &h);

    scanf("%d", &n);

    for(int i=0; i<n; i++){
        scanf("%d %d %d %d", &l, &d, &x, &y);
        if(d==0) for(int j=0; j<l; j++) board[y][x+j]=1;
        else for(int j=0; j<l; j++) board[x+j][y]=1;
    }

    for(int i=1; i<=w; i++){
        for(int j=1; j<=h; j++) printf("%d ", board[i][j]);
        printf("\n");
    }

    return 0;
}

1099

#include <stdio.h>

int main(){
    int x=2, y=2, tmp, maze[11][11];

    for(int i=1; i<11; i++){
        for(int j=1; j<11; j++) scanf("%d", &maze[i][j]);
    }

    while(maze[y][x]!=2){
        maze[y][x] = 9;
        if(maze[y][x+1] != 1) x++;
        else if(maze[y+1][x] != 1) y++;
        else break;
    }

    maze[y][x] = 9;

    for(int i=1; i<11; i++){
        for(int j=1; j<11; j++) printf("%d ", maze[i][j]);
        printf("\n");
    }

    return 0;
}

언어 공부, 보안 공부를 포함해서 그때그때 필요한 걸 구글링으로 찾아서 공부하는 사파(?)방식으로 공부를 했었기 때문에 이렇게 순차적으로 공부해본 적은 처음인데 중간중간 빠트리고 모르고 있었던 내용이나, 제대로 정리가 안되어있었던 부분을 채우고 갈 수 있어서 나름 괜찮았던 것 같다.....

 

다음부터 누군가가 프로그래밍 공부를 처음 시작한다고 하면 코딩도장과 codeup 추천할 듯...

 

(개인적으로는 다 하고 나니 얻어가는 내용에 비해 시간이 아깝다는 생각도 들어서 기본적인 내용을 숙지하고 계시는 분들은 기초100제 순서대로 하는 것은 비추....)

백준 문제 풀이 6378 ( 디지털 루트 )

백준 디지털 루트

문제

image

풀이

mlist = []
while(1):
    _inp = int(input())
    result = 0
    if _inp == 0:
        break
    if len(str(_inp)) == 1:
        mlist.append(_inp)
    while len(str(_inp)) != 1:
        for i in str(_inp):
            result += int(i)
        if len(str(result)) > 1:
            _inp = result
            result = 0
        else:
            mlist.append(result)
            break
for i in mlist:
    print(i)

백준 문제 풀이 6321 ( IBM 빼기 1 )

백준 IBM 빼기 1

문제

image

풀이

case = int(input())
index = 0
for i in range(case):
    index += 1
    result = ''
    _name = input()
    for j in _name:
        result += chr(int(ord(j)) + 1).replace('[','A')
    print("String #" + str(index) + '\n' + result + '\n')

백준 문제 풀이 4641 ( Doubles )

백준 Doubles

문제

image

풀이

while(1):
    index = 0
    case = input().split()
    if case[0] == '-1':
        break

    for i in case[:-1]:
        if str(int(i)*2) in case:
            index += 1
    print(index)

백준 문제 풀이 12595 ( Odd Man Out (small) )

문제

You are hosting a party with G guests and notice that there is an odd number of guests! When planning the party you deliberately invited only couples and gave each couple a unique number C on their invitation. You would like to single out whoever came alone by asking all of the guests for their invitation numbers.

( 해석 )

당신은 G 손님들과 파티를 열었고 이상한 손님이 있다는 것을 알아차리시오! 파티를 계획할 때 당신은 의도적으로 커플만을 초대했고 각각의 커플에게 초대장에 고유한 C 번호를 부여했다. 당신은 모든 손님들에게 초대 번호를 물어봄으로써 혼자 온 사람을 가려내고 싶어한다.

( 번역 - Papago 쨩 )

입력

The first line of input gives the number of cases, N. N test cases follow. For each test case there will be:

  • One line containing the value G the number of guests.
  • One line containing a space-separated list of G integers. Each integer C indicates the invitation code of a guest.

Limits

  • 1 ≤ N ≤ 50
  • 0 < C ≤ 2147483647
  • 3 ≤ G < 100

( 해석 )

첫 번째 입력 라인은 사례 수 N을 제공한다. N개의 테스트 사례가 뒤따른다. 각 테스트 사례에 대해 다음이 있을 것이다.

  • G가 포함된 한 줄의 게스트 수입니다.
  • 공백으로 구분된 G 정수의 목록을 포함하는 하나의 선. 각 정수 C는 게스트의 초대 코드를 표시한다.

한계

  • 1 ≤ N ≤ 50
  • 0 < C ≤ 2147483647
  • 3 ≤ G < 100

출력

For each test case, output one line containing "Case #x: " followed by the number C of the guest who is alone.

( 해석 )

각 테스트 케이스에 대해 "케이스 #x: "가 포함된 라인 1개를 출력한 후 혼자 있는 게스트의 숫자 C를 출력한다.

예제 입력 1


3
3
1 2147483647 2147483647
5
3 4 7 4 3
5
2 10 2 10 5

예제 출력 1


Case #1: 1
Case #2: 7
Case #3: 5

풀이


import sys                            				# 모듈

test = int(sys.stdin.readline().strip())            		# 테스트 케이스 입력

for i in range(test):                       			# test 만큼 루프
    human = int(sys.stdin.readline().strip())      		# 몇명인지 입력
    guest = list(str(sys.stdin.readline().strip().split()))  	# 게스트 초대코드 입력
    guest.sort()                         			# guest 리스트 정렬
    for j in range(0,len(guest),2):                		# 0 ~ guest 길이만큼 2씩 증가해서 루프
        if guest[j] == guest[j+1]:                		# 짝수랑 홀수랑 같다면
            continue                         			# 계속
        else:                             			# 아니고
            if guest[j] == guest[j+2]:                 		# 처음꺼랑 세번째꺼 비교해서 같으면
                print("Case #" + str(i+1) + ": " + str(guest[j+1]))     # 두번째가 혼자왔다는 뜻
                break
            else:                             				# 또 아니면
                print("Case #" + str(i+1) + ": " + str(guest[j]))     	# 첫번째가 혼자왔다는 뜻
                break

결과는 런타임 에러^^

번역된 글 이해하기도 난해한데 런타임 에러까지 뜨고 ㅠ 런타임 에러는 이유도 안알려주니 뭐가 문제인지도 모르겠고 멘탈 와르르


이후 수정하면 올림


( 수 정 )

위에 소스코드는 str로 guest를 입력받아 리스트를 만들어 글자가 하나씩 들어가기 때문에 굳이 런타임 에러가 아니더라도 잘못된 소스코드였다.


import sys

count = 0
test = int(sys.stdin.readline().strip())

for i in range(test):
    human = int(sys.stdin.readline().strip())
    guest = list(map(int,sys.stdin.readline().strip().split()))
    for j in guest:
        for k in guest:
            if j == k:
                count += 1
        if count == 1:
            print("Case #" + str(i+1) + ": " + str(j))
            break
        else:
            count = 0

그 후 수정하면서 함수사용을 최소화 시키면서도 나름 코드를 줄인다고 줄여보았다.

하지만 무엇이 문제인지 틀렸다고 한다^^

 


( 2 차 수 정 )


import sys

count = 0
test = int(sys.stdin.readline().strip())

for i in range(test):
    human = int(sys.stdin.readline().strip())
    guest = list(map(int,sys.stdin.readline().strip().split()))
    for j in guest:
        for k in guest:
            if j == k:
                count += 1
        if count == 1:
            print("Case #%s: "%(str(i+1)) + str(j))
            count = 0
        else:
            count = 0

이건 또 맞았단다.

아니 혼자 온 사람이 여러명이라는 소리는 없었잖아;;; 문제 설명좀 ㅠ


화나서 이리저리 건들다 그냥 복붙했는데 갑자기 맞았습니다 떠서 당황함;;

어쨋든 맞았다니 된거 아니겠나

백준 문제 풀이 1157 ( 단어 공부 )

백준 단어 공부

import sys 					# 모듈 가져와~

word = sys.stdin.readline().strip().upper() 	# 입력 받아서 대문자로 바꾸고 word에 저장

lst = [] 					# 빈
cnt = [] 					# 리스트 생성
mx = 0 						# max값 0으로 초기화

for i in word: 					# word에 입력받은 문자 하나씩 i 에 넣고
    if not i in lst: 				# lst에 i 가 없으면
        lst.append(i) 				# 추가
        cnt.append(word.count(i)) 		# cnt에는 i 의 갯수 세서 추가

for j in range(len(lst)): 			# lst리스트 길이만큼 루프
    if mx < cnt[j]: 				# 제일 많이 나온 값 구하기
        mx = cnt[j] 
        wrd = lst[j]
        
cnt.sort() 					# 정렬하고
cnt.reverse() 					# 뒤집어서 제일 큰값이 앞에 오게
						# [0]이 가장 큰 수 [1]이 두번째 큰 수
if cnt[0] == cnt[1]: 				# [0]과[1]이 같으면 가장 큰 수 최소 두개 이상
    print("?") 					# ?출력
else:
    print(wrd) 					# 아니면 wrd 출력

능지가 일을 안해서 그냥 손가는대로 짠 코드.... 전혀 파이썬 답지 않다.

그것도 그렇지만 백준에서 런타임에러가 나 받아주질 않는다.


import sys

word = sys.stdin.readline().strip().upper()

mx = 0
wrd = ' ' 				# 빈 문자열
cnt = []
lst = []

for i in word:
    if not i in lst:
        lst.append(i)
        cnt.append(word.count(i))

for j in range(len(lst)):	 	# 이 부분부터 바뀜
    if mx <= cnt[j]:		 	# max 값이 cnt[j] 보다 작거나 같을때
        if mx < cnt[j]: 		# 그러면서도 max 값이 더 작을때
            wrd = ' ' 			# wrd 문자열 공백으로 초기화
        wrd += lst[j] 			# wrd 를 문자열 더하기로 붙여버리기
        mx = cnt[j] 			# max 값 더 큰 값으로 초기화

if len(wrd) > 1:		 	# 길이 재서 1보다 길면 ?출력
    print("?")
else:
    print(wrd)

함수를 너무 많이 써서 런타임 에러가 낫나보다 함수 몇개 줄이니까 잘 풀렸다

백준 문제 풀이 1110 ( 더하기 사이클 )

백준 더하기 사이클

imageimageimage

first = int(input()) 			# 첫번째 값 입력

ex = list(str(first)) 			# 문자열로 치환하여 각 자리수를 뜯어 리스트에 집어넣음

count = 1 				# count 값 초기화

while(1): 				# 무한 루프
    if len(ex) == 1: 			# 만약 ex자리수가 1이면
        ex[1] = 0 			# 뒤에 0 붙여줌
    add = int(ex[0]) + int(ex[1]) 	# 더한 값을 구하여
    ex2 = list(str(add))		# ex2라는 리스트에 자리수마다 뜯어 넣음
    
    if len(ex2) == 1: 			# ex2가 만약 1의 자리라면
        ex2.insert(0,str(0)) 		# 첫번째 인덱스에 0 넣음
        
    result = ex[1] + ex2[1] 		# 각 자리의 오른쪽 값을 더해 결과값 산출
    
    if str(first) == result: 		# 만약 같으면
        break 				# 루프 중단
    else: 				# 다르면
        count += 1 			# 카운트 1 올리고 
        ex = list(str(result)) 		# ex에 결과값 넣기

print(count) 				# 카운트 출력

점점 가면 갈수록 국어문제가 되가는 것 같다.

프로그래밍 스터디 #3 (Baekjoon 4673, 11399)

백준 셀프넘버

imageimage

selfnum = [] 			# selfnum 리스트 선언
for i in range(1,10001): 	# selfnum 리스트에 1~10000 까지 추가
    selfnum.append(i)
for i in range(1,10001): 
    ex = list(str(i)) 		# i 를 한자리 씩 끊어서 ex 리스트에 추가
    cre = i 			# cre = i 로 초기값 설정
    for j in range(len(ex)): 	# ex리스트에 길이 즉 자리수 만큼 루프
        cre += int(ex[j]) 	# cre에 각각의 자리값 더해줌
    if cre in selfnum: 		# 만약 selfnum 리스트에 cre 값이 있다면
        selfnum.remove(cre) 	# cre 를 지워줌
selfnum.sort() 			# 정렬

print(selfnum) 			# 남아있는 값은 셀프넘버이기때문에 출력

맨 처음 짠 소스 코드 : 출력 결과에서 리스트로 출력했기 때문에 틀린 것 같다.

selfnum = []
for i in range(1,10001):
    selfnum.append(i)
for i in range(1,10001):
    ex = list(str(i))
    cre = i
    for j in range(len(ex)):
        cre += int(ex[j])
    if cre in selfnum:
        selfnum.remove(cre)
selfnum.sort()

for k in range(len(selfnum)):
    print(selfnum[k])

그래서 for문 하나를 더 추가해줘서 하나씩 뽑아주었다.


백준 ATM

test = int(input()) 	# 사람수 입력 버리는 값
time = input().split() 	# time 이라는 공백을 기준으로 리스트 값 추가

time.sort() 		# 정렬

add = 0 		# 초기값
result = 0 		# 초기값

for i in time: 		# time 값을빼와서 루프
    add += int(i) 	# add 할 값
    result += add 	# 매번 애드값을 더해 결과값 생성
        
print(result) 		# 출력

맨 처음 생각한 코드 사람의 수를 입력을 받고 사용할 대가 없어서 그냥 버렸는데 그것이 문제인지 결과값은 똑같은데 틀렸다고 나온다.

(수정)

정렬이 문자열로 정렬되기 때문에 10의 자리수가 되면 잘못된 결과가 나온다.

test = int(input())
time = list(map(int,input().split()))

time.sort()

add = 0
result = 0

for i in time:
    add += int(i)
    result += add
        

print(result)

그래서 저번에 배웠던 map 함수를 이용해 int 형으로 입력받은 각각의 값의 주소를 list로 묶어서 사용하였다.

그후 정렬을 하고 값을 구했더니 답이 되었다.

백준 문제 풀이 10809 (알파벳 찾기)

백준 문제 풀이 알파벳 찾기

import sys 

word = sys.stdin.readline().strip()		# 입출력 이게 빠르다니까 이거 씁시다
result = '' 					# 빈 문자열 생성
for i in range(26): 				# 소문자만 사용한다 하였으니 a부터 z 까지 26번 루프
    for j in chr(97+i): 			# chr 함수를 이용해 ascii코드를 j에 집어넣읍시다!
        if j in word: 				# j가 word에 있다면
            result += str(word.index(j)) 	# 인덱스 번호를 result 문자열에 추가해주고
        else: 					# 아니라면
            result += str(-1)			# result 에 -1을 문자열로 추가해줍시당
        result += ' '				# 출력 형식이 한칸씩 띄어야 했으니 스페이스바 한번 눌러주고
print(result)					# 출력해주세요

python 짱짱 이제 시간 남으면 C언어로 했던 문제들 복습해야겠다.

 

print(*map(input().find,map(chr,range(97,123))),sep=' ')


# "문자열".find("문자") 로 문자열에서 문자의 위치를 찾을 수 있단다...
# 이 때 문자가 문자열에 포함되지 않을경우 -1 을 반환한단다....
# 이건 몰랐지;;

# 코드 동작 방식
# 1. 입력을 받음
# 2. map 으로 아스키코드를 각각 분리
# 이 때 map 객체 생성 [a,b,...,z]
# 3. map(input().find,map(chr,range(97,123)))
# 4. input().find 라는 함수에 map(chr,range(97,123))이라는 객체 집어넣기
# 5. 찾아서 출력

# 언제나 그랬듯 풀고나서 다른사람의 풀이를 찾아봤는데
# 세상에 고수는 많은거 같습니다;

# exit 1100 고맙습니다 ^^7 이해하는데 매우 힘들었는데 도움에 충성충성

백준 문제 풀이 10828 (스택)

백준 문제 풀이 스택

test = int(input()) 		# 명령어 갯수 입력
stack = [] 			# 스택이라는 빈 리스트 생성

for i in range(test):	 	# 명령어 갯수 입력 받은 만큼 루프
    cmd = input().split() 	# cmd 입력
    if cmd[0] == 'push':	# 만약 push 라면
        stack.append(cmd[1]) 	# 스택에 값 추가
    if cmd[0] == 'top': 	# top 이고
        if stack == []: 	# 스택이 비어있으면
            print("-1")	 	# -1 출력
        else: 		  	# 아니면 
            print(stack[-1]) 	# 스택 맨 뒷 값 출력
    if cmd[0] == 'pop': 	# pop 이고
        if stack == []: 	# 스택이 비어있으면
            print("-1") 	# -1 출력
        else: 		   	# 아니면
            print(stack.pop()) 	# 스택에서 마지막값 pop 하고 출력
    if cmd[0] == 'size': 	# size 이면
        print(len(stack)) 	# 스택의 저장되 있는 값 갯수 출력
    if cmd[0] == 'empty': 	# empty 이고
        if stack == []: 	# 스택이 비어있으면
            print("1") 		# 1 출력
        else:		  	# 아니면
            print("0") 		# 0 출력

처음 문제를 보자마자 아! 리스트에 append 와 pop 을 이용해서 스택을 구현하면 편하겠구나 싶어서 바로 코드를 짜봤다.

헤맨 부분은 push는 인자가 필요한데 입력을 어떻게 받지.....? <-- 이거였다.

이 부분은 cmd 또한 리스트로 입력을 받아 인덱스 번호를 부여하면서 해결 되었다.

실행 결과 구현은 되었지만 백준에서 시간초과로 통과를 시켜주지 않는다....

미궁일세... 풀리지 않아 ㅠㅠ


알아보니 시간제한이 0.6 에서 0.5로 줄었다는 군요 ㅠㅠ 내 코드도 통과 시켜 달라 ㅠㅠ C언어로 준비해 와야겠습니다.


2019/12/24

image

하핳 하하하하하핳 나도 0.6초 마렵다 ㅎ

imageimage

파이썬이 극도로 느리기 때문에 입력에서라도 속도를 높이기 위해 sys.stdin.readline() 을 사용하라고 합니다.

import sys 

stack = [] 
test = int(sys.stdin.readline().strip()) 

for i in range(test): 
    cmd = sys.stdin.readline().strip().split() 
    if cmd[0] == 'push': 
        stack.append(cmd[1])
    elif cmd[0] == 'pop':
        if not stack:
            print(-1)
        else:
            print(stack.pop())
    elif cmd[0] == 'size':
        print(len(stack))
    elif cmd[0] == 'empty':
        if not stack:
            print(1)
        else:
            print(0)
    elif cmd[0] == 'top':
        if not stack:
            print(-1)
        else:
            print(stack[-1])
            
    # 그냥 input().split() 에서 sys.stdin.readline().strip().split()
    # 으로 바뀐거 밖에 음슴
    # sys.stdin.readline().strip().split()
    # sys ) system 함수
    # stdin ) 표준 입력
    # readline() ) 입력을 읽어옴(?)
    # strip() )  문자열의 양 끝 쓸데없이 읽어온 공백 제거
    # split() ) 공백을 기준으로 인자 나눔

하아;;; 이거 찾는다고 몇시간을 헤맨거야; ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ 0.1초 차이가 너무 크다

백준 문제 풀이 10773 (제로)

백준 문제 풀이 제로

test = int(input()) 		# 테스트 케이스 입력
num = [] 			# 빈 리스트 생성
sum = 0 			# 더해서 저장할 변수 0으로 초기화
for i in range(test): 		# 테스트 케이스 만큼 루프
    stdi = input() 		# 숫자 입력
    if stdi == '0': 		# 만약 입력이 0 이면
        num.pop() 		# 리스트에서 pop
    else:
        num.append(stdi) 	# 아니면 리스트에 추가
for j in num: 			# 리스트에 남아있는 값들 더하는 루프
    sum += int(j)
print(sum) 			# 출력

음...? 오늘 하루만에 너무 많은걸 하니까 머리아프다.... 능지 일해라

백준 문제 풀이 2941 (크로아티아 알파벳)

백준 문제 풀이 크로아티아 알파벳

cro = ['c=','c-','dz=','d-','lj','nj','s=','z='] # 크로아티아 알파벳 리스트로 정리

word = input() 					 # 문자 입력
result = len(word) 				 # 크로아티아 알파벳이 없을 경우를 위해 문자의 최대길이로 초기화
for i in cro: 					 # 크로아티아 알파벳 갯수만큼 루프
    if i in word: 				 # 입력받은 문자에 크로아티아 알파벳이 있다면
        result = result - 1	 		 # 결과값에서 글자길이 하나 제거
print(result) 					 # 출력

처음 생각한 소스 코드

멍청하게도 같은 크로아티아 알파벳이 들어갔을 경우와 dz= 의 문자 길이가 3인걸 생각하지 않았다.

cro = ['c=','c-','dz=','d-','lj','nj','s=','z=']

word = input()
result = len(word)
for i in cro:
    if i in word:
        result = result - word.count(i)
print(result)

그래서 word 안에서 i에 들어가있는 크로아티아 문자의 갯수를 센다음 그 갯수만큼 빼주었다.

그 후 출력하였더니 정답이 나왔다.

cro = ['c=','c-','dz=','d-','lj','nj','s=','z=']

word = input()
for i in cro:
    word = word.replace(i,',')

print(len(word))

그 후 다른사람들의 답을 찾아 보았는데 문자의 갯수를 세면 되는거기 때문에 replace 함수로 찾은 크로아티아 알파벳을 아무 문자로 치환한 다음 문자 길이를 출력해도 된다. replace라는 함수는 몰랐던 함수인데 이번에 찾아보면서 배우게 되었다.

백준 문제 풀이 3052 (나머지)

백준 문제 풀이 나머지

result = [] 			# 빈 리스트 만들기
for i in range(10): 		# 10번 입력
    num = int(input()) % 42 	# int형으로 입력받은 변수를 42로 나눈 나머지 값
    if num not in result: 	# 그 값이 result리스트에 존재하지 않으면
        result.append(num) 	# 값 추가

print(len(result)) 		# 리스트 개수 출력

처음에는 num 을 리스트로 받아서 중복된 값을 없애주는 방식으로 하려고 했는데 계속 오류가 나서 살펴보니 int형은 리스트로 들어갈 수 없어서 계속 오류가 났다.

그래서 빈 리스트를 만들어준다음 그 빈 리스트에 값이 존재하지 않으면 넣어주는 방식으로 바꾸어서 풀었더니 풀렸다.

백준 문제 풀이 11720 (숫자의 합)

백준 문제 풀이 숫자의 합

test = int(input())	# 숫자의 길이 입력

arr = list(input()) 	# 숫자 리스트로 입력

sum = 0 		# 더해져서 들어갈 변수 초기화

for i in range(test): 	# 숫자의 길이 만큼 반복
    sum += int(arr[i]) 	# 리스트에 있는 값 인트형으로 바꿔 sum에 더해서 저장

print(sum) 		# 출력

 

+ Recent posts