에서 풀다【초중급자가 풀어야 할 과거문정선 100문】(001 - 004 전탐색:전열거)

1. 목적



초중급자가 풀어야 할 과거문정선 100문을 파이썬으로 푸십시오.
모두 풀이 끝날 무렵에 하늘색이 되어 있는 것이 목표입니다.

이 기사는 "001 - 004 전체 탐색 : 전체 열거"입니다.

2. 총괄



파이썬에서는 조합의 열거 등은 itertools 하지만 할 수 있지만, 연습을 위해 for문으로 썼다.
특히 넘어지지는 않았다.

3. 본편



001 - 004 전체 탐색 : 전체 열거



001. ITP1_7_B - How Many Ways?





답변


answer_list = []
while True:
    n, x = map(int, input().split())
    if n == 0 and x == 0:
        break

    count = 0
    for first in range(1, n + 1):
        for second in range(first + 1, n + 1):
            for third in range(second + 1, n + 1):
                if first + second + third == x:
                    count += 1

    answer_list.append(count)

for answer in answer_list:
    print(answer)


문제문은 중복 없음이므로, for문의 first , second , third 의 범위가 중복되지 않게 주의합니다.
구체적으로는 second 의 스타트를 first+1 , third 의 스타트를 second+1 로 합니다.

002. AtCoder Beginner Contest 106 B - 105





답변


def is_target(num):
    count = 0
    for i in range(1, num+1):
        if num % i == 0:
            count += 1
    if count == 8:
        return True
    else:
        return False

if __name__ == "__main__":
    N = int(input())
    count = 0
    for num in range(1, N+1, 2):
        count += is_target(num)

    print(count)


약수가 8인지 아닌지를 True , False 로 돌려주는 is_target 라는 함수를 작성합니다.
그 후 1~N까지의 홀수에 대해 is_target 로 체크해 더해 줍니다(True는 1이므로 그대로 더할 수 있다).

003. AtCoder Beginner Contest 122 B - ATCoder





답변


target = 'ACGT'
S = input()

answer = 0
for start in range(len(S)):
    if S[start] not in target:
        continue
    count = 0
    for end in range(start, len(S)):
        if S[end] not in target:
            break
        count += 1

    answer = max(answer, count)

print(answer)


문자열 S에서 꺼내는 부분 문자열은 첨자 startend 를 사용하여 S[start : end] 갑니다.

체크 시에는 start 의 for문에서는 end 가 아닌 경우는 ACGT , start 의 for문에서는 ACGT

004.파 연배 2019 C - 노래방





답변


N, M = map(int, input().split())
A = [list(map(int, input().split())) for _ in range(N)]

answer = 0
for song1 in range(M):
    for song2 in range(song1+1, M):
        score = 0
        for i in range(N):
            score += max(A[i][song1], A[i][song2])

        answer = max(answer, score)

print(answer)

continueend에 대한 for문을 돌립니다.
그리고 그 안쪽에서 각 학생(첨자 ACGT )에 대해 breaksong1 의 큰 쪽의 점수를 채용합니다.

좋은 웹페이지 즐겨찾기