본문 바로가기

C언어

Codeup 기초 파이썬 100제 중 비교적 어려웠던 문제

반응형

Codeup 기초 파이썬 100제 중 비교적 어려웠던 문제

 

문제번호: 6091

입력과 출력조건은 위와 같고 3 가지 변수에 대한 최소 공배수를 구하는 문제이다. 당연히 math 임포트해서 풀었는데 정확하게 나오는데 사이트에선 틀린 답안이라고 나와서 직접 만들었다.

 

def gcd(a, b):
    while(b != 0):
        r = a % b
        a = b
        b = r
    return a

def lcm(a, b):
    return a*b / gcd(a,b)

def main():
    a, m, d = input().split()
    a = int(a)
    m = int(m)
    d = int(d)
    result = lcm(a, m)
    result = int(lcm(result, d))
    print(result)

if __name__ == '__main__':
    main()

 


문제번호: 6095

이번 문제는 19*19 바둑판 위에 흰 돌을 올려놓는 문제이다. 따라서 좌표를 받은 후 값을 1로 변경한다. 또 똑같은 좌표를 받으면 continue 한다.

 

def main():
    n = int(input())
    d = [[0]*20 for i in range(20)]
    for i in range(n):
        x, y = input().split()
        if d[int(x)][int(y)] == 1:
            continue
        d[int(x)][int(y)] += 1

    for i in range(1, 20):
        for j in range(1, 20):
            print(d[i][j], end=' ')
        print() 

if __name__ == '__main__':
    main()

 


문제번호: 6096

이번 문제는 위와 비슷하게 19*19 바둑판과 좌표 개수와 좌표를 입력받는다. 이후 십자 뒤집기를 한다. 예를 들어 좌표(10,10)을 받았을 경우, x=10인 경우와 y=10인 경우의 돌을 반전시키면 된다.

 

def main():
    # 입력
    d = [[0]*20 for i in range(20)]
    for i in range(19):
        a = input().split()
        for j in range(19):
            d[i][j] = int(a[j])

    n = int(input())
    for i in range(n):
        x, y = input().split()
        x = int(x) -1
        y = int(y) -1
        
        # 연산
        for j in range(19):    
            if d[j][y] == 1:
                d[j][y] = 0
            else:
                d[j][y] = 1
            
            if d[x][j] == 1:
                d[x][j] = 0
            else:
                d[x][j] = 1

    # 출력
    for i in range(19):
        for j in range(19):
            print(d[i][j], end=' ')
        print() 

if __name__ == '__main__':
    main()

문제번호 : 6097

 

이번 문제는 실수 때문에 삽질을 조금 했다. 실수만 아니였으면 쉬운 문제였다.

 

def main():
    # 입력
    h, w = input().split()
    h, w = int(h), int(w) #세로, 가로 초기화
    a = [[0]*w for i in range(h)] #배열 생성

    n = int(input())
    for i in range(n):
        l, d, x, y = input().split()
        l, d, x, y = int(l), int(d), int(x)-1, int(y)-1
        for j in range(l):
            if d == 0:
                a[x][j+y] = 1
            else:
                a[x+j][y] = 1


    # 출력
    for i in range(h):
        for j in range(w):
            print(a[i][j], end=' ')
        print() 

if __name__ == '__main__':
    main()

 

 


문제번호: 6098

 

 

경로를 표시하는 문제인데 재밌었다.

def main():
    a = [[0]*10 for i in range(10)] #배열 생성

    for i in range(10):     # 배열 입력
        d = input().split()
        for j in range(10):
            a[i][j] = int(d[j])
    check = True
    i, j = 1, 1
    while(check):
        if(i+1 == 10):
            break
        if(a[i][j] == 2):
            a[i][j] = 9
            break
        elif(a[i][j] == 0):
            a[i][j] = 9
            j = j+1
        elif(a[i][j] == 1):
            j = j-1
            i += 1

        
        
    # 출력
    for i in range(10):
        for j in range(10):
            print(a[i][j], end=' ')
        print() 

if __name__ == '__main__':
    main()

 

728x90

'C언어' 카테고리의 다른 글

C언어 입력과 출력 강의 및 연습문제 풀이  (0) 2022.08.04