티스토리 뷰

Data Science

코드업 기초100제2 Python

호기심 많은 직장인 2022. 7. 11. 14:44

목차



    728x90

    여러분, 안녕하세요!!

    오늘은 이전에 남겼던 코드업 기초 100제에 이어서 나머지 문제들을 다뤄보려고 합니다. 

    따라서 이번 페이지는 6051~6098번(51~98번)까지의 문제 및 풀이입니다.

    코드업 기초100제

     

    #51.
    a,b = map(int,input().split())
    print(a!=b)
    
    0 1
    True
    

     

    #52. 정수값이 입력될 때, 그 불 값을 출력하는 프로그램
    n = int(input())
    print(bool(n))
    
    0
    False
    

     

     
    #53. 정수값이 입력될 때, 그불 값을 반대로 출력하는 프로그램
    a=bool(int(input()))
    print(not(a))
    
    1
    False
    

     

     
    #54. 2개의 정수값이 입력될 때, 그 불 값이 모두 True일 때에만 True를 출력하는 프로그램
    a,b = input().split()
    print(bool(int(a)) and bool(int(b)))
    
    1 1
    True
    

     

     
    #55. 2개의 정수값이 입력될 때, 그 불 값이 하나라도 True일 때에만 True를 출력하는 프로그램
    a,b = map(int, input().split())
    print(bool(a)or bool(b))
    
    1 1
    True
    

     

     
    #56. 2개의 정수값이 입력될 때, 그 불 값이 서로 다를 때에만 True를 출력하는 프로그램
    a,b = map(int,input().split())
    a=bool(a)
    b=bool(b)
    print(a and not(b) or b and not(a))
    
    1 1
    False
    

     

     
    #57.2개의 정수값이 입력될 때,그 불 값(True/False) 이 서로 같을 때에만 True 를 출력하는 프로그램을 작성해보자.
    
    a,b = map(int,input().split())
    a=bool(a)
    b=bool(b)
    if a == b:
        print(True)
    else:
        print(False)
    
    0 0
    True
    

     

     
    #58.2개의 정수값이 입력될 때,그 불 값(True/False) 이 모두 False 일 때에만 True 를 출력하는 프로그램을 작성해보자.
    
    a,b = map(int,input().split())
    a=bool(a)
    b=bool(b)
    if (a and b) == False:
        print(True)
    else:
        print(False)
    
    0 0
    True
    

     

     
    #59.입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자
    a=int(input())     # ~n = -n-1
    print(~a)
    
    2
    -3
    
     
    #60.입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.
    a,b = map(int,input().split())
    print(a & b)
    
    3 5
    1
    

     

     
    #61.입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력해보자.
    a,b = map(int,input().split())
    print(a|b)
    
    3 5
    7
    

     

     
    #62.입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.
    a,b = map(int,input().split())
    print(a^b)
    
    3 5
    6
    

     

     
    #63. 입력된 두 정수(a, b) 중 큰 값을 출력하는 프로그램을 작성해보자.
    a,b = map(int,input().split())
    if a>b:
        print(a)
    else:
        print(b)
    
    123 456
    456
    

     

     
    #64.입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.
    a,b,c = map(int,input().split())
    if a<b and a<c :
        print(a)
    elif b<a and b<c:
        print(b)
    elif c<a and c<b:
        print(c)
        
        
    print((a if a < b else b) if (a if a < b else b) < c else c)
    
    3 -1 5
    -1
    -1
    

     

     
    #65. 3개의 정수(a, b, c)가 입력되었을 때, 짝수만 출력해보자.
    a,b,c = map(int, input().split())
    if (a%2)==0:
        print(a)
    if (b%2)==0:
        print(b)
    if (c%2)==0:
        print(c)
    
    1 2 4
    2
    4
    

     

     
    #66.3개의 정수(a, b, c)가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.
    a,b,c = map(int,input().split())
    if a%2==0:
        print("even")
    else: print("odd")
    
    if b%2==0:
        print("even")
    else: print("odd")
    
    if c%2==0:
        print("even")
    else: print("odd")
    
    1 2 8
    odd
    even
    even
    

     

     
    #67.0이 아닌 정수 1개가 입력되었을 때, 음(-)/양(+)과 짝(even)/홀(odd)을 구분해 분류해보자.
    a = int(input())
    
    if a<0:
        if a%2==0:
            print("A")
        else: print("B")
    
    elif a>0:
        if a%2==0:
            print("C")
        else: print("D")
    
    -2147483648
    A
    

     

     
    #68.점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.
    a = int(input())
    if a>=90 and a<=100:
        print('A')
    elif a>=70 and a<=89:
        print('B')
    elif a>=40 and a<=69:
        print('C')
    elif a>=0 and a<=39:
        print('D')    
    
    73
    B
    

     

     
    #69.평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.
    a=input()
    print("평가:내용")
    if a=='A':
        print('best!!!')
    if a=='B':
        print('good!!')
    if a=='C':
        print('run!')
    if a=='D':
        print('slowly~')
    
    A
    평가:내용
    best!!!
    

     

     
    #70. 월이 입력될 때 계절 이름이 출력되도록 해보자.
    a = int(input())
    if a==12 or a==1 or a==2:
        print('winter')
    elif a==3 or a==4 or a==5:
        print('spring')
    elif a==6 or a==7 or a==8:
        print('summer')
    elif a==9 or a==10 or a==11:
        print('fall')    
    
    12
    winter
    

     

     
    #71. 0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
    n=1
    while n!=0:
        n=int(input())
        if n!=0:
            print(n)
    
    15
    15
    1
    1
    2
    2
    3
    3
    4
    4
    5
    5
    6
    6
    44
    44
    5
    5
    8
    8
    0
    

     

     
    #72. 정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
    n=int(input())
    while n!=0:
        print(n)
        n=n-1
    
    5
    5
    4
    3
    2
    1
    

     

     
    #73.정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
    n=int(input())
    while n>0:
        n=n-1
        print(n)
    
    5
    4
    3
    2
    1
    0
    
     
    #74.영문 소문자(a ~ z) 1개가 입력되었을 때,a부터 그 문자까지의 알파벳을 순서대로 출력해보자(다시보기)
    c=ord(input())
    k=ord('a')
    while k<=c:
        print(chr(k),end='')
        k+=1
    
    z
    abcdefghijklmnopqrstuvwxyz

     

    #75.정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
    a=int(input())
    n=0
    while a>=n:
        print(n)
        n+=1
    
    4
    0
    1
    2
    3
    4
    

     

     
    #76.정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
    n = int(input())
    for i in range(0,n+1):
        print(i)
    
    4
    0
    1
    2
    3
    4
    

     

     
    #77.정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.
    for i in range(5):
        print(i)
    
    0
    1
    2
    3
    4
    
     
    #78.영문 소문자 'q'가 입력될 때까지입력한 문자를 계속 출력하는 프로그램을 작성해보자.
    while n!='q':
        n=input()
        print(n)
    
    a
    a
    b
    b
    c
    c
    d
    d
    q
    q
    
     
    #79.1, 2, 3 ... 을 계속 더해 나갈 때,그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만계속 더하는 프로그램을 작성해보자.
    
    n=int(input())
    a=0
    b=0
    while b<n:
        a+=1
        b+=a
    print(a)
    
    55
    10
    
     
    #80.1부터 n까지, 1부터 m까지 숫자가 적힌 서로 다른 주사위 2개를 던졌을 때, 나올 수 있는 모든 경우를 출력해보자.
    n,m = map(int,input().split())
    for i in range(1,n+1):
        for z in range(1,m+1):
            print(i,z)
    
    2 3
    1 1
    1 2
    1 3
    2 1
    2 2
    2 3
    
     
    #81.
    #16진수(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)를 배운
    #영일이는 16진수끼리 곱하는 16진수 구구단?에 대해서 궁금해졌다.
    
    #A, B, C, D, E, F 중 하나가 입력될 때,
    #1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.
    #(단, A ~ F 까지만 입력된다.)
    
    ord("A")
    
    65

     

    #82.
    #친구들과 함께 3 6 9 게임을 하던 영일이는 잦은 실수 때문에 계속해서 벌칙을 받게 되었다.
    #3 6 9 게임의 왕이 되기 위한 369 마스터 프로그램을 작성해 보자.
    
    n = int(input())
    for i in range(1,n+1):
        if i%10 ==3:
            print("박수X", end=' ')
        elif i%10==6:
            print("박수X", end=' ')
        elif i%10==9:
            print("박수X", end=' ')
        else:
            print(i,end=' ')
    
    29
    1 2 박수X 4 5 박수X 7 8 박수X 10 11 12 박수X 14 15 박수X 17 18 박수X 20 21 22 박수X 24 25 박수X 27 28 박수X 
     
    #83.
    #빨강(red), 초록(green), 파랑(blue) 빛을 섞어 여러 가지 다른 색 빛을 만들어 내려고 한다.
    #빨강(r), 초록(g), 파랑(b) 각 빛의 가짓수가 주어질 때,
    #주어진 rgb 빛들을 섞어 만들 수 있는 모든 경우의 조합(r g b)과 만들 수 있는 색의 가짓 수를 계산해보자.  
    
    r,g,b = map(int,input().split())
    count=0
    for i in range(0,r):
        for j in range(0,g):
            for k in range(0,b):
                print(i,j,k)
                count += 1
    print(count)
    
    2 2 2
    0 0 0
    0 0 1
    0 1 0
    0 1 1
    1 0 0
    1 0 1
    1 1 0
    1 1 1
    8
    
     
    #84.
    # 소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다.
    
    # 마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크하고,
    # 한 번씩 체크할 때 마다 그 값을 정수값으로 바꾸어 저장하는 방식으로 소리를 파일로 저장할 수 있다.
    
    # 값을 저장할 때에는 비트를 사용하는 정도에 따라 세세한 녹음 정도를 결정할 수 있고,
    # 좌우(스테레오) 채널로 저장하면 2배… 5.1채널이면 6배의 저장공간이 필요하고,
    # 녹음 시간이 길면 그 만큼 더 많은 저장공간이 필요하다.
    
    # 1초 동안 마이크로 소리강약을 체크하는 횟수를 h
    # (헤르쯔, Hz 는 1초에 몇 번? 체크하는가를 의미한다.)
    
    # 한 번 체크한 값을 저장할 때 사용하는 비트수를 b
    # (2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..)
    
    # 좌우 등 소리를 저장할 트랙 개수인 채널 개수를 c
    # (모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.)
    
    # 녹음할 시간(초) s가 주어질 때,
    
    # 필요한 저장 용량을 계산하는 프로그램을 작성해보자.
    
    # 실제로, 일반적인 CD 음질(44.1KHz, 16bit, 스테레오)로 1초 동안 저장하려면
    # 44100 * 16 * 2 * 1 bit의 저장공간이 필요한데,
    # 44100*16*2*1/8/1024/1024 로 계산하면 약 0.168 MB 정도가 필요하다.
    
    # 이렇게 녹음하는 방식을 PCM(Pulse Code Modulation) 방법이라고 하는데,
    # 압축하지 않은 순수한(raw) 소리 데이터 파일은 대표적으로 *.wav 가 있다.
    
    # **
    #       8 bit(비트)           = 1byte(바이트)       # 8bit=1Byte
    # 1024 Byte(210 byte) = 1KB(킬로 바이트)  # 1024Byte=1KB
    # 1024 KB(210 KB)      = 1MB(메가 바이트)
    # 1024 MB(210 MB)     = 1GB(기가 바이트)
    # 1024 GB(210 GB)      = 1TB(테라 바이트)
    
    # h, b, c, s 가 공백을 두고 입력된다.
    # h는 48,000이하, b는 32이하(단, 8의배수), c는 5이하, s는 6,000이하의 자연수이다.
    
    h,b,c,s = map(int,input().split(' '))
    mb=round(h*b*c*s/8/1024/1024,1)
    print(f'{mb} MB')
    
    44100 16 2 10
    1.7 MB
    

     

     
    #85.
    # 이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.
    
    # 가장 기본적인 방법으로는 그림을 구성하는 한 점(pixel, 픽셀)의 색상을
    # 빨강(r), 초록(g), 파랑(b)의 3가지의 빛의 세기 값으로 따로 변환하여 저장하는 것인데,
    
    # 예를 들어 r, g, b 각 색에 대해서 8비트(0~255, 256가지 가능)씩을 사용한다고 하면,
    
    # 한 점의 색상은 3가지 r, g, b의 8비트+8비트+8비트로 총 24비트로 표현해서
    # 총 2^24 가지의 서로 다른 빛의 색깔을 사용할 수 있는 것이다.
    
    # 그렇게 저장하는 점을 모아 하나의 큰 이미지를 저장할 수 있게 되는데,
    # 1024 * 768 사이즈에 각 점에 대해 24비트로 저장하면 그 이미지를 저장하기 위한
    # 저장 용량을 계산할 수 있다.
    
    # 이렇게 이미지의 원래(raw) 데이터를 압축하지 않고 그대로 저장하는 대표적인 이미지 파일이
    # *.bmp 파일이며, 비트로 그림을 구성한다고 하여 비트맵 방식 또는 래스터 방식이라고 한다.
    
    # 이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때,
    # 압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.
    
    # 예를 들어
    # 일반적인 1024 * 768 사이즈(해상도)의 각점에 대해
    # 24비트(rgb 각각 8비트씩 3개)로 저장하려면
    # 1024 * 768 * 24 bit의 저장공간이 필요한데,
    # 1024*768*24/8/1024/1024 로 계산하면 약 2.25 MB 정도가 필요하다.
    
    # 실제 그런지 확인하고 싶다면, 간단한 그림 편집/수정 프로그램을 통해 확인할 수 있다.
    
    # **
    #       8 bit(비트)           = 1byte(바이트)     #       8bit=1Byte
    # 1024 Byte(210 byte) = 1KB(킬로 바이트)  # 1024Byte=1KB
    # 1024 KB(210 KB)      = 1MB(메가 바이트)
    # 1024 MB(210 MB)     = 1GB(기가 바이트)
    # 1024 GB(210 GB)      = 1TB(테라 바이트)
    
    
    # w, h, b 가 공백을 두고 입력된다.
    # 단, w, h는 모두 정수이고 1~1024 이다. b는 40이하의 4의 배수이다.
    
    r,g,b = map(int,input().split())
    mb = round(r*g*b/8/1024/1024,2)
    print(f'{mb} MB')
    
    1024 768 24
    2.25 MB
    

     

     
    #86.
    # 1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데,
    # 그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
    
    # 즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데,
    # 어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.
    
    # 하지만, 이번에는 그 때 까지의 합을 출력해야 한다.
    
    # 예를 들어, 57을 입력하면
    # 1+2+3+...+8+9+10=55에서 그 다음 수인 11을 더해 66이 될 때,
    # 그 값 66이 출력되어야 한다.
    
    n = int(input())
    i=0
    j=0
    while j<=n:
        i+=1
        j+=i
    print(j)
    
    57
    66
    

     

     
    #87.
    # 1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
    # 3의 배수인 경우는 출력하지 않도록 만들어보자.
    
    # 예를 들면,
    # 1 2 4 5 7 8 10 11 13 14 ...
    # 와 같이 출력하는 것이다.
    
    
    n=int(input())
    for i in range(1,n+1):
        if (i%3) ==0:
            pass
        else:
            print(i)
    
    10
    1
    2
    4
    5
    7
    8
    10
    

     

     
    #88.
    # 1 4 7 10 13 16 19 22 25 ... 은
    # 1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다.
    # 이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여
    
    # 등차(차이가 같다의 한문 말) 수열이라고 한다. (등차수열 : arithmetic progression/sequence)
    # 수열을 알게 된 영일이는 갑자기 궁금해졌다.
    
    # "그럼.... 123번째 나오는 수는 뭘까?"
    
    # 영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.
    
    # 시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
    # n번째 수를 출력하는 프로그램을 만들어보자.
    
    
    a,d,n = map(int,input().split())
    num = a+(d*(n-1))
    print(num)
    
    1 3 5
    13
    
     
    #89.
    # 예를 들어
    # 2 6 18 54 162 486 ... 은
    # 2부터 시작해 이전에 만든 수에 3을 곱해 다음 수를 만든 수열이다.
    
    # 이러한 것을 수학에서는 앞뒤 수들의 비율이 같다고 하여
    # 등비(비율이 같다의 한문 말) 수열이라고 한다. (등비수열 : geometric progression/sequence)
    
    # 등비 수열을 알게된 영일이는 갑자기 궁금해졌다.
    # "그럼.... 13번째 나오는 수는 뭘까?"
    # 영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.
    
    # 시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
    # n번째 수를 출력하는 프로그램을 만들어보자.
    
    a,r,n = map(int,input().split())
    total = a
    for i in range(a, a+(n-1)):
        total*=r
    print(total)
    
    2 3 7
    1458
    

     

     
    #90.
    # 예를 들어
    # 1 -1 3 -5 11 -21 43 ... 은
    # 1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만든 수열이다.
    
    # 이런 이상한 수열을 알게 된 영일이는 또 궁금해졌다.
    # "그럼.... 13번째 나오는 수는 뭘까?"
    
    # 영일이는 물론 수학을 아주 잘하지만 이런 문제는 본 적이 거의 없었다...
    # 그래서 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.
    
    # 시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때,
    # n번째 수를 출력하는 프로그램을 만들어보자.
    
    
    a,m,d,n = map(int,input().split())
    total = a
    for i in range(a, a+(n-1)):
        total *= m
        total += d
    print(total)
    
    1 -2 1 8
    -85
    

     

     
    #91.
    # 온라인 채점시스템에는 초등학생, 중고등학생, 대학생, 대학원생,
    # 일반인, 군인, 프로그래머, 탑코더 등 아주 많은 사람들이 들어와 문제를 풀고 있는데,
    
    # 실시간 채점 정보는 메뉴의 채점기록(Judge Status)을 통해 살펴볼 수 있다.
    
    # 자! 여기서...잠깐..
    # 같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가
    # 매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?
    
    # 예를 들어 3명이 같은 날 가입/등업하고, 각각 3일마다, 7일마다, 9일마다
    # 한 번씩 들어온다면, 처음 가입하고 63일 만에 다시 3명이 함께 문제를 풀게 된다.
    
    # 갑자기 힌트?
    # 왠지 어려워 보이지 않는가?
    # 수학에서 배운 최소공배수를 생각한 사람들도 있을 것이다. 하지만, 정보에서 배우고 경험하는
    # 정보과학의 세상은 때때로 컴퓨터의 힘을 빌려 간단한 방법으로 해결할 수 있게 한다.
    
    # 아래의 코드를 읽고 이해한 후 도전해 보자.
    # day는 날 수, a/b/c는 방문 주기이다.
    
    
    a,b,c = map(int,input().split())
    d = 1
    while d%a!=0 or d%b!=0 or d%c!=0 :
        d += 1
    print(d)
    
    3 7 9
    63
    

     

     
    #92.
    # 정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다.
    
    # 선생님은 출석부를 보고 번호를 부르는데,
    # 학생들의 얼굴과 이름을 빨리 익히기 위해 번호를 무작위(랜덤)으로 부른다.
    
    # 그리고 얼굴과 이름이 잘 기억되지 않는 학생들은 번호를 여러 번 불러
    # 이름과 얼굴을 빨리 익히려고 하는 것이다.
    
    # 출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.
    
    
    
    from random import randint
    n = int(input())
    temp = [0] * 23
    nums = input().split()
    for i in nums:
        temp[int(i)-1] += 1
    for i in temp:
        print(i, end=' ')
    
    10
    1 3 2 2 5 6 7 4 5 9
    1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
     
    #93.
    # 정보 선생님은 수업을 시작하기 전에 이상한 출석을 부른다.
    
    # 학생들의 얼굴과 이름을 빨리 익히기 위해 번호를 무작위(랜덤)으로 부르는데,
    # 영일이는 선생님이 부른 번호들을 기억하고 있다가 거꾸로 불러보는 것을 해보고 싶어졌다.
    
    # 출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자.
    
    n = int(input())
    nums = input().split()
    nums.reverse()
    for i in nums:
        print(int(i), end=' ')
    
    10
    10 4 2 3 6 6 7 9 8 5
    5 8 9 7 6 6 3 2 4 10 
     
    #94.
    # 정보 선생님은 오늘도 이상한 출석을 부른다.
    
    # 영일이는 오늘도 다른 생각을 해보았다.
    # 출석 번호를 다 부르지는 않은 것 같은데... 가장 빠른 번호가 뭐였지?
    
    # 출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.
    n = int(input())
    nums = map(int, input().split())
    print(min(nums))
    
    10
    10 4 2 3 6 6 7 9 8 5 
    2
    

     

     
    #95.
    # 기숙사 생활을 하는 학교에서 어떤 금요일(전원 귀가일)에는 모두 집으로 귀가를 한다.
    
    # 오랜만에 집에 간 영일이는 아버지와 함께 두던 매우 큰 오목에 대해서 생각해 보다가
    # "바둑판에 돌을 올린 것을 프로그래밍 할 수 있을까?"하고 생각하였다.
    
    # 바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때,
    # n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.
    
    
    li = [[0 for i in range(19)] for j in range(19)]
    n = int(input())
    for i in range(n):
        x, y = map(int, input().split())
        if(li[x-1][y-1] != 1):
            li[x-1][y-1] = 1
    for i in li:
        print(' '.join(map(str, i)))
    
    5
    1 1
    2 2
    3 3
    4 4
    5 5
    1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    

     

     
    #96.
    # 부모님을 기다리던 영일이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가...
    
    # "십(+)자 뒤집기를 해볼까?"하고 생각했다.
    
    # 십자 뒤집기는
    # 그 위치에 있는 모든 가로줄 돌의 색을 반대(1->0, 0->1)로 바꾼 후, 
    # 다시 그 위치에 있는 모든 세로줄 돌의 색을 반대로 바꾸는 것이다.
    # 어떤 위치를 골라 집자 뒤집기를 하면, 그 위치를 제외한 가로줄과 세로줄의 색이 모두 반대로 바뀐다.
    
    # 바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
    # n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.
    
        
    li = []
    for i in range(19):
        li.append([])
        k = input().split()
        for e in k:
            li[i].append(int(e))
    n = int(input())
    x = []
    y = []
    for i in range(n):
        a, b = map(int, input().split())
        for j in range(19):
            li[a-1][j] = 1 if li[a-1][j] != 1 else 0
            li[j][b-1] = 1 if li[j][b-1] != 1 else 0
    for i in li:
        print(' '.join(map(str, i)))    
    
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    2
    10 10
    12 12
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
    
     
    #97.
    # 부모님과 함께 놀러간 영일이는
    # 설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다.
    
    # 길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데,
    
    # 막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다.
    # (잉어, 붕어, 용 등 여러 가지가 적혀있다.)
    
    # 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
    # 막대를 놓는 방향(d:가로는 0, 세로는 1)과
    # 막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,
    
    # 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.
    
    li = []
    h, w = map(int, input().split())
    for i in range(h):
        li.append([])
        for j in range(w):
            li[i].append(0)
    n = int(input())
    for i in range(n):
        l, d, x, y = map(int, input().split())
        for j in range(l):
            if d == 0:
                li[x-1][y-1] = 1
                y += 1
            else:
                li[x-1][y-1] = 1
                x += 1
    for i in li:
        print(' '.join(map(str, i)))
    
    5 5
    3
    2 0 1 1 
    3 1 2 3
    4 1 2 5
    1 1 0 0 0
    0 0 1 0 1
    0 0 1 0 1
    0 0 1 0 1
    0 0 0 0 1
    

     

     
    #98.
    # 영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다.
    
    # 왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데,
    # 그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다.
    
    # 개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
    # (오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.)
    
    # 이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다.
    
    # 미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지
    # 오른쪽 또는 아래쪽으로만 움직였다.
    
    # 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
    # 먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.
    
    # 단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
    # 더이상 이동하지 않고 그 곳에 머무른다고 가정한다.
    
    # 미로 상자의 테두리는 모두 벽으로 되어 있으며,
    # 개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.
    
    li = []
    for i in range(10):
        li.append([])
        k = input().split()
        for e in k:
            li[i].append(int(e))
    x, y = 1, 1
    flag = True
    
    while flag:
        if li[x][y] == 2:
            li[x][y] = 9
            flag = False
        elif (li[x][y+1]) == 1:
            if li[x+1][y] == 1:
                li[x][y] = 9
                flag = False
            else:
                li[x][y] = 9
                x += 1
        else:
            li[x][y] = 9
            y += 1
    for i in li:
        print(' '.join(map(str, i)))
    
    1 1 1 1 1 1 1 1 1 1
    1 0 0 1 0 0 0 0 0 1
    1 0 0 1 1 1 0 0 0 1
    1 0 0 0 0 0 0 1 0 1
    1 0 0 0 0 0 0 1 0 1
    1 0 0 0 0 1 0 1 0 1
    1 0 0 0 0 1 2 1 0 1
    1 0 0 0 0 1 0 0 0 1
    1 0 0 0 0 0 0 0 0 1
    1 1 1 1 1 1 1 1 1 1
    1 1 1 1 1 1 1 1 1 1
    1 9 9 1 0 0 0 0 0 1
    1 0 9 1 1 1 0 0 0 1
    1 0 9 9 9 9 9 1 0 1
    1 0 0 0 0 0 9 1 0 1
    1 0 0 0 0 1 9 1 0 1
    1 0 0 0 0 1 9 1 0 1
    1 0 0 0 0 1 0 0 0 1
    1 0 0 0 0 0 0 0 0 1
    1 1 1 1 1 1 1 1 1 1

    문제와 풀이를 같이 정리해보았는데, 저는 90번이 넘어가면서 생각해야 할 부분도 많아지고 어렵다고 느껴졌습니다. 이게 기초라니..라는 생각도 드네요ㅎㅎㅎ코딩 테스트를 몇 번 보았지만, 진짜 지문 읽기가 싫을 정도로 글이 많던데 걱정이네요.

    그래도 시작이 반이다 라는 생각으로 노력해보려고 합니다. 이글을 읽는 여러분들도 포기하지 마시고, 같이 파이팅합시다!!

    728x90
    반응형