오늘도 구름 사이트에서 파이썬으로 코테 연습!
배열에 n개의 정수를 순서대로 넣으려는데 정수 중에서 문자열 k가 포함되어있으면 배열에 넣지 않는다. 정수는 순서대로 주어진다. 총 배열의 길이를 반환해라.
입력예시
5 12
12 122 21 19 30
출력
3
in
연산자의 활용이 중요한 문제다. 숫자 문자열에서 특정 k 문자열을 포함하는지 in 연산자를 이용해서, 반복문을 활용해 문제를 풀면 간단하게 풀어진다.n, k = input().split()
k = str(k)
s_list = input().split()
result = []
for string in s_list:
if k in string:
continue;
else:
result.append(string)
print(len(result))
타운홀에 n개의 행사가 예정되어있다. 첫줄에는 총 행사의 개수, 그래고 각 줄에는 시작 시간과 끝 시간이 공백으로 나눠져서 입력이 들어온다.
행사가 끝나면 적어도 1의 시간이 지나야 다음 행사가 시작된다. 열릴 수 있는 행사의 최대 개수를 구해라.
쉬운 그리디 문제지만 파이썬으로 구현하는 것이 좀 헷갈렸다.
우선 n을 입력을 받아주고, 각 줄은 for i in range(n) 반복문으로 시작과 끝 시간을 받아서 리스트에 할당해준다.
함수를 따로 만들어서 해당 리스트를 끝나는 시간을 기준으로 정렬(key=lambda x:x[1]) 시켜준다. 마지막 시간을 변수로 할당해주고 시작 시간이 마지막시간보다 크면 카운트를 늘려주고 마지막 시간을 새로 업데이트해주는 그리디 방식으로 총 행사의 개수를 구해서 반환하면 된다.
def event(event_list):
event_list.sort(key=lambda x:x[1])
count = 0
last_time = -1
for e in event_list:
if e[0] > last_time:
count += 1
last_time = e[1]
return count
n = int(input())
event_list = []
for i in range(n):
start, end = map(int, input().split())
event_list.append([start, end])
print(event(event_list))