[코테 준비 : day17]

Choi·2023년 7월 17일
0

코딩테스트 준비

목록 보기
17/22

차곡차곡..!

  1. 나이순 정렬
    https://www.acmicpc.net/problem/10814

    나이와 이름을 받을 때 나이순으로 정렬! lamda를 이용해서 정렬 기준을 세워준다.
n = int(input())
member_lst = []

for i in range(n):
    age, name = map(str, input().split())
    age = int(age)
    member_lst.append((age, name))

member_lst.sort(key = lambda x : x[0])	## (age, name)에서 age만 비교

for i in member_lst:
    print(i[0], i[1])
  1. 시리얼 번호
    https://www.acmicpc.net/problem/1431

    여러 기준으로 정렬을 해야한다. 이 문제 또한 lamda식을 이용하여 정렬 우선순위를 만들어준다.
n = int(input())

def sum_num(inputs):
    result = 0
    for i in inputs:
        if i.isdigit():
            result+=int(i)
    return result

arr = []
for i in range(n):
    a = input()
    arr.append(a)

arr.sort(key = lambda x:(len(x), sum_num(x), x))
for i in arr:
    print(i)
  1. 파도반 수열
    https://www.acmicpc.net/problem/9461

    정말 어떻게 풀어야할지 모르겠을 때는 규칙이 있는지 잘 찾아봐야한다. 이 문제는 6번째부터 규칙이 있었다.1~5번째는 먼저 입력하고 6번째부터 규칙성을 찾아 입력해주자.
t = int(input())
 
li = [1,1,1,2,2]
for i in range(5, 100):
    li.append(li[i-1]+li[i-5])
 
for _ in range(t):
    n = int(input())
    print(li[n-1])
  1. 2*n타일링
    https://www.acmicpc.net/problem/11726

    이 문제 또한 규칙성을 찾아서 풀어여한다..!
n = int(input())

dp = [0 for _ in range(n+1)]

if n <= 3 : print(n)
else : 
	dp[1] = 1
	dp[2] = 2
	for i in range(3, n+1):
		dp[i] = dp[i-1] + dp[i-2]

	print(dp[i]%10007)
  1. 2×n 타일링 2
    https://www.acmicpc.net/problem/11727
import sys
input = sys.stdin.readline

n = int(input())
dp = [0] * 1001

# 초기값 지정
dp[0] = 1
dp[1] = 1

# 점화식에 따른 경우의 수 계산
for i in range(2, n+1):
    dp[i] = dp[i-1] + 2 * dp[i-2]

print(dp[n]%10007)
profile
느려도 내 것으로 만드는게 좋잖아?

2개의 댓글

comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

1개의 답글