240701 TIL #439 파이썬 코테 연습 2

김춘복·2024년 6월 30일
0

TIL : Today I Learned

목록 보기
439/571

Today I Learned

오늘도 구름 사이트에서 파이썬으로 코테 연습!


숫자 제거 배열

숫자 제거 배열 문제

배열에 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))
profile
Backend Dev / Data Engineer

0개의 댓글