728x90
반응형

Python 문제풀이

a=[]

for i in range(20):
    a.insert(i, i+1)

for i in range(10):
    x, y = map(int, input().split())

    for j in range(x, y-((y-x)//2)):
        a[j-1], a[y-j+x-1] = a[y-j+x-1] , a[j-1]

for i in range(20):
    print(a[i])

 

 

이 문제는 풀면서 헷갈려서 종이에 끄적거리면서 풀었습니다. 그냥 암산을 잘 못해서 그런 것 같습니다.

 

배열에 1~20의 수를 집어넣고 하라는대로 5 10 이라고 주어졌다면 배열 입장에서4부터 9를 역순으로 뒤집어 주면 되는 문제입니다. 그래서 4와 9의 숫자를 바꾸고 5와 8의 숫자를 바꾸고 6과 7의 숫자를 바꾸는 식으로 문제를 풀었습니다.

 

5,6,7 등의 가운데 숫자가 남는 경우에서 6같은 경우는 그대로 있어도 상관없기 때문에 range속 조건 대로 처리하여도 문제가 없습니다.

 

마지막에는 배열의 요소들을 그냥출력해주면 됩니다.

728x90
반응형
728x90
반응형

Python 문제풀이

n = int(input())

result =[]
for i in range(n):
    y = 0
    k = 0
    for j in range(9):
        a, b= map(int, input().split())
        y += a
        k += b
    if y>k:
        result.insert(i,'Yonsei')
    elif y<k:
        result.insert(i, 'Korea')
    else:
        result.insert(i, 'Draw')

for i in range(n):
    print(result[i])

해당 야구 문제는 조금.. 문제가 있는 것 같습니다. 뭐랄까 테스트 예시가 별로 없는 느낌이 듭니다. 사실 연세대학교가 이기는 경우만 대충 채점하고 넘어가는 느낌이 들기 때문에.. 시도는 안해봤지만 저렇게까지 코드를 짜지 않아도 풀릴 것 같습니다.

 

일단 문제 대로 한 테스트당 9개의 기록이 들어있고 그걸 다 합해서 게임을 승리한 쪽의 이름을 출력하고, 동점이라면 Draw를 출력하는 문제입니다. 문제대로 하긴 했는데 약간 현타가 오는 문제였습니다.

728x90
반응형
728x90
반응형

Python 문제풀이

x = input()
y = input()

if len(x) >= len(y):
    print('go')
else:
    print('no')

솔직히 너무 간단한 문제입니다. 문제가 귀여워 보여서 풀긴 풀었는데 너무 간단해서.. 설명할 것이 별로 없는 것 같습니다.

 

두개의 문자열을 입력받고 내가 낼 수 있는 'aaah'가 같거나 길다면 go를, 아니라면 no를 출력하면 됩니다. 사실 aaah의 의미가 없는 것이 그냥 문자열의 길이만 따지면 됩니다. 그래서 len(x) 등을 사용하였습니다.

728x90
반응형
728x90
반응형

Python 문제풀이

n = int(input())

a = list(map(int, input().split()))
b = []
min = -1 #오르막길의 시작지점을 저장할 변수

if n==1:
    print(0)

for i in range(n-1):
    if i==0 and a[i]<a[i+1]: #처음이 오르막길의 시작일 경우
        min = a[i]
    elif i>0 and a[i]<a[i+1] and a[i]<=a[i-1] and min== -1: #처음이 아닌 오르막길의 시작일 경우
        min = a[i]
    elif i>0 and a[i]>a[i-1] and a[i]>=a[i+1] and min!= -1: #오르막길이 끝난 경우
        b += [a[i]-min]
        min = -1
    elif i == n-2 and a[i]>a[i-1] and min != -1 and a[i]<=a[i+1]: #끝나가는 부분이 오르막길로 끝나는 경우
        b += [a[i+1] - min]

if b == []:
    print(0)
    exit
else:
    result = b[0]
    for i in range(len(b)):
        if result < b[i]:
            result = b[i]

    print(result)

조건을 많이 달아서 코드가 조금 지저분합니다.. 주석으로 조건의 설명을 적어놨지만 저도 다시보니 복잡하네요.

 

min은 오르막길이 시작하는 경우 그 시작지점을 저장해두는 변수이고, 오르막길에 끝날 경우 min에 -1을 넣어 오르막길이 끝났다는 것을 나타내기 위해 사용합니다.

 

오르막길이 끝났을 경우 (끝난 지점 - min)을 해주면 오르막길의 높이를 알 수 있습니다. 해당 높이를 리스트에 차곡차곡 저장하고 마지막에 오르막길의 높이들이 저장된 리스트에서 최대값을 구하여 출력하면 됩니다.

728x90
반응형
728x90
반응형

Python 문제풀이

score = input()
result = 0

if score[0] =='A':
    result += 4
elif score[0] =='B':
    result += 3
elif score[0] =='C':
    result += 2
elif score[0] =='D':
    result += 1

if score =='F':
    result = 0
elif score[1] =='+':
    result += 0.3
elif score[1] =='-':
    result -= 0.3

print(float(result))

조건문만 사용할 줄 알면 정말 간단하게 풀 수 있는 문제인데, 코드를 어떻게 효율적으로 짤 수 있는지가 문제인 것 같습니다. 더욱 간단하게 짤 수 있으면 좋을 것 같습니다.

728x90
반응형
728x90
반응형

Python 문제풀이

x = []
odd=0
sum=0
min=100 #처음 주어지는 자연수가 100보다 작으니..

for i in range(7):
    x.insert(i, int(input()))
    if x[i]%2==1:
        odd+=1
        sum += x[i]
        if x[i] < min:
            min=x[i]

if odd==0:
    print(-1)
    exit
else:
    print(sum)
    print(min)

홀수의 개수를 세어 홀수가 하나도 없는 경우에는 '-1'을 출력하도록 합니다.

 

홀수인 경우는 sum에 홀수의 값을 더하고 min의 값보다 해당 홀수값이 작다면 min에 그 값을 넣습니다.

 

그렇게 홀수의 합과 가장 작은 홀수를 구할 수 있습니다.

728x90
반응형

+ Recent posts