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
반응형
728x90
반응형

Python 문제풀이

x = int(input())
y = int(input())
sum=0

for i in range(101):
    if x <= (i*i) and y>=(i*i):
        if sum==0:
            min = i*i
        sum += i*i

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

주어진 범위가 크지 않기 때문에 100까지의 제곱수를 비교해서 계산하면 됩니다.

728x90
반응형
728x90
반응형

Python 문제풀이

x = input()
y = input()

result=0

for i in range(len(x)):
    for j in range(len(y)):
        if x[i]!=" " and x[i] == y[j]:
            z = x[i]
            x = x.replace(x[i], " ", 1)
            y = y.replace(y[j], " ", 1)
            break

for i in range(len(x)):
    if x[i]!=' ':
        result +=1

for i in range(len(y)):
    if y[i]!=' ':
        result +=1

print(result)

어렵지 않게 같은 알파벳이 있는 경우 양쪽 문자 모두 해당 자리를 공백으로 변환한 후, 마지막에 공백이 아닌 알파벳의 개수를 세는 코드입니다. 서로 공통되지 않는 알파벳의 수를 구한다고 생각하면 편합니다.

728x90
반응형
728x90
반응형

Python 문제풀이

n = int(input())
a = []
result = ''
for i in range(n):
    a.insert(i,input())

if n==1:
    print(a[0])
    exit

for i in range(len(a[0])):
    for j in range(n-1):
        if a[j][i]!=a[j+1][i]:
            result += '?'
            break
        elif j == n-2:
            result += a[j][i]

print(result)

간단하게 입력받는 문장들의 각 자리를 비교해주면 된다. 각자리를 비교하다가 다른게 나온다면 '?' 문자를 결과 문자열에 추가해 주고 다음 자리 문자를 비교하기 위해 break를 한다.

 

그 자리의 문자가 모두 동일하다면 결과 문자열에 해당자리 문자를 추가해준다.

 

간과하게 되는 부분이 있는데, 문자열이 하나밖에 없는 경우의 처리를 따로 해주어야한다. 비교대상이 없기 때문에 그냥 그것만 출력하고 프로그램을 종료하도록 한다.

728x90
반응형

+ Recent posts