민듀키티

[240520] 코딩테스트 문제풀이 본문

Coding Test/Python

[240520] 코딩테스트 문제풀이

민듀키티 2024. 5. 20. 12:11

 

1. 방번호

https://www.acmicpc.net/problem/1475

from collections import Counter
import math
A = list(map(int, input()))

A_counter = Counter(A)
A_count_list = list(A_counter.items())

max_number = 0
sixnine = 0
for i in range(len(A_count_list)) :
    if A_count_list[i][0] == 6 :
        sixnine += A_count_list[i][1]

    elif A_count_list[i][0] == 9:
        sixnine += A_count_list[i][1]

    else :
        max_number= max(max_number, A_count_list[i][1])

max_number = max(max_number, math.ceil(sixnine/2))

print(max_number)

 


2. 쉽게 푸는 문제

https://www.acmicpc.net/problem/1292

n,m = map(int, input().split())
A = list()

while len(A) < m :

    for i in range(1,m+1) :
        if len(A) > m :
            break
        for j in range(i) :
            A.append(i)

answer = 0
for i in range(n-1,m) :
    answer += A[i]

print(answer)

 


3.  수 이어쓰기

n = int(input())
answer = ''

for i in range(n) :
    answer += str(i+1)

print(len(answer))

 

 


4. 문서검색

https://www.acmicpc.net/problem/1543

n = list(input())
m = list(input())
index = 0
count = 0

while index + len(m)  <= len(n) :
    TF = True

    for i in range(len(m)) :
        index_one = index + i
        if n[index_one] != m[i] :
            TF = False
            break

    if TF :
        index += len(m)
        count += 1

    else :
        index += 1


print(count)

 

 


5.  DNA 비밀번호

  • 노가다 코드임 ㅜㅜ

https://www.acmicpc.net/problem/12891

n,m = map(int, input().split())
A = list(input())
length = list(map(int, input().split()))
ACGT = [0,0,0,0]
count = 0

# 초기값
for i in range(m) :
    if A[i] == 'A' :
        ACGT[0] += 1
    elif A[i] == 'C' :
        ACGT[1] += 1
    elif A[i] == 'G' :
        ACGT[2] += 1
    elif A[i] == 'T' :
        ACGT[3] += 1

count_4 = 0
for i in range(4) :
    if length[i] <= ACGT[i] :
        count_4 += 1

if count_4 == 4 :
    count += 1

for i in range(1,n-m+1) :
    start_index = A[i-1]
    end_index = A[i+m-1]

    if start_index == 'A' :
        ACGT[0] -= 1
    elif start_index == 'C' :
        ACGT[1] -= 1
    elif start_index == 'G' :
        ACGT[2] -= 1
    elif start_index == 'T' :
        ACGT[3] -= 1


    if end_index == 'A' :
        ACGT[0] += 1
    elif end_index == 'C' :
        ACGT[1] += 1
    elif end_index == 'G' :
        ACGT[2] += 1
    elif end_index == 'T' :
        ACGT[3] += 1

    count_4 = 0
    for i in range(4):
        if length[i] <= ACGT[i]:
            count_4 += 1

    if count_4 == 4:
        count += 1


print(count)