정화 코딩
매일 문제 풀기 - 7월 다섯째 주 본문
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이다!!! 하하하 신난당
'PS' 카테고리의 다른 글
매일 문제 풀기 - 8월 둘째 주 (0) | 2023.08.07 |
---|---|
매일 문제 풀기 - 8월 첫째 주 (0) | 2023.08.01 |
매일 문제 풀기 - 7월 넷째 주 (0) | 2023.07.18 |
매일 문제 풀기 - 7월 셋째 주 (0) | 2023.07.11 |
백준 새싹 배지 얻기 - 1월 넷째 주 (0) | 2023.01.23 |