정화 코딩

매일 문제 풀기 - 7월 다섯째 주 본문

PS

매일 문제 풀기 - 7월 다섯째 주

jungh150c 2023. 7. 26. 03:13

7/24. 부녀회장이 될테야 (백준 2775번)

 

https://www.acmicpc.net/problem/2775

 

#python

data = [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]]

for i in range (1, 15) :
    data.append([])
    data[i].append(data[i-1][0])
    for j in range (1, 14) :
        data[i].append(data[i][j-1] + data[i-1][j])

case = int(input())

for i in range (0, case) :
    k = int(input())
    n = int(input())
    print(data[k][n-1])

 

이 문제의 알고리즘 분류를 슬쩍 보니 다이나믹 프로그래밍이 있었다. 검색해보니 쉽게 말해 앞에서 이미 구했던 값을 활용하는 방법이라고 생각하면 되는 알고리즘인 것 같다. 이걸 힌트로 k, m 값을 받기도 전에 어차피 1부터 14까지만 요구한다고 하니 그에 해당하는 모든 값을 구하기로 했다. 이 때 이차원 리스트를 활용하였다. 그 다음에 요구받은 k와 m에 대한 값을 출력한다. 처음에 모든 값을 다 구하는 것은 다음과 같이 했다.

(정답)

 


 

7/25. 알파벳 찾기 (백준 10809번)

 

https://www.acmicpc.net/problem/10809

 

#python

alphabet = [-1] * 26
data = list(input())  #문자열을 리스트로 변환하는 법

for i in range (0, len(data)) :
    index = ord(data[i]) - 96
    if alphabet[index-1] == -1 :
        alphabet[index-1] = i

for i in range (0, 26) :
    print(alphabet[i], end = " ")

 

파이썬에서 줄바꿈없이 출력하는 법. print(result, end = ""). 만약 공백 두고 출력하고 싶다면 print(result, end = ""). 줄바꿈 있게 출력하고 싶다면 print(result, end = "\n"). 즉, print의 디폴트가 end="\n"인가 보다.

파이썬에서 알파벳을 숫자로 바꾸는 법. 알파벳을 아스키 값으로 변환해주는 ord() 사용! 대문자는 ord(x) - 64 소문자는 ord(x) - 96 하면 된다. 근데 이렇게 하면 각각 A와 a, 즉 첫번째 문자의 값이 1로 반환되기 때문에 인덱스로 활용하려면 1을 또 빼줘야 한다. (정답)

 


 

7/26. 최댓값 (백준 2562번)

 

https://www.acmicpc.net/problem/2562

 

#python

data = []

for i in range(0, 9) :
    data.append(int(input()))

max = data[0]
maxIndex = 0

for i in range(1, 9) :
    if data[i] > max :
        max = data[i]
        maxIndex = i

print(max)
print(maxIndex+1)

 

(정답) 우와 드디어 실버3이다!!! 하하하 신난당

 

Comments