1859 백만장자프로젝트
문제를 먼저 잘 이해하고 생각한 뒤 풀면 생각보다 쉽게 풀리는 문제
Idea 1. 일단, 최대의 이익을 내려면 계속 사다가 가장 비싸게 팔 수 있는 시점에 팔아야 한다.
Idea 2. 배열을 뒤에서 부터 순회하면서, 특정 시점에서 얼마에 파는게 가장 최대일지 구하면 된다
- 제일 마지막 순간에 팔 수 있는 가격을 초기값으로 설정
- 뒤에서부터 오면서, 더 비싸게 팔 수 있는 순간이 올 경우(t2) 최대값으로 가격을 갱신해주기
- 더 비싸게 팔 수 있는 순간이 아니라면, 사는게 무조건 이득임
for tc in range(int(input())):
N = int(input())
data = list(map(int, input().split()))
max_value = 0
curmax = data[-1] # current max : i시점에서 팔 수 있는 최대가격
for i in range(len(data)-2,-1,-1): # 뒤에서부터 돌아야 함
if data[i] < curmax:
max_value += curmax-data[i]
else:
curmax = data[i] # i시점까지는 더 비싸게 팔 수 있게 되었다!
print("#{} {}".format(tc+1,max_value))
1926 간단한369게임
다양한 방법으로 풀 수 있는 문제.
# 방법 1 - 내장함수를 사용하지 않고 그냥 순회하는 방법
for i in range(1,int(input())+1):
n = str(i)
cnt = 0
for digit in n:
if digit in ["3","6","9"]:
cnt += 1
print(i if cnt==0 else "-"*cnt, end=" ")
# 방법 2 - 내장함수(count)를 사용하는 방법
for i in range(1,int(input())+1):
cnt = str(i).count("3") + str(i).count("6") + str(i).count("9")
if cnt == 0:
print(i, end=" ")
else:
print("-"*cnt, end=" ")
2007 패턴 마디의 길이
문제 조건이 조금 명확하지 않은 것 같기는 하지만, 통과는 쉽게 할 수 있는 문제
for tc in range(int(input())):
pattern = input()
start = pattern[0]
result = 0
for i in range(1, len(pattern)):
# i인덱스에서 현재 알파벳과 같은 알파벳이 나왔을 때, i인덱스 전까지와 i인덱스 부터 2i까지 같으면 발견한 것
if pattern[i] == start and pattern[0:i]==pattern[i:2*i]:
result = i
break
print("#{} {}".format(tc+1,result))
2005 파스칼의 삼각형
고민을 많이 하다가, 재귀로 푸는 방법 선택.
다음 줄을 출력할 때는 직전 줄의 정보를 리스트로 넘겨서 쉽게 다음줄을 만들어낼 수 있게 구현함
def triangle(li, k):
global N
if k == N + 1:
return
tmp = [0] * k
for i in range(k):
if i == 0 or i == (k - 1):
tmp[i] = 1
else:
tmp[i] = li[i] + li[i - 1]
print(" ".join(map(str, tmp)))
triangle(tmp, k + 1)
for tc in range(int(input())):
N = int(input())
print("#{}".format(tc+1))
triangle([],1)
'Problem Solving > SWEA' 카테고리의 다른 글
[ SWEA ] D2 - 1954, 1948, 1946, 1945 - python 문제풀이 (0) | 2021.06.27 |
---|---|
[ SWEA ] D2 - 1970, 1966, 1961, 1959 - python 문제풀이 (0) | 2021.06.26 |
[ SWEA ] D2 - 1983, 1979, 1976, 1974 - python 문제풀이 (0) | 2021.06.24 |
[ SWEA ] D2 - 2001, 1989, 1986, 1984 - python 문제풀이 (0) | 2021.06.24 |
[ SWEA ] D1 풀이 모음 - python (0) | 2021.06.23 |
댓글