[WEEK19] 알고리즘 - 11653. 소인수분해 / 2798. 블랙잭 / 1269. 대칭 차집합

신호정 벨로그·2021년 12월 17일
0

Today I Learned

목록 보기
83/89

11653. 소인수분해

import sys
sys.stdin = open("11653_소인수분해.txt", 'r')

input = sys.stdin.readline

N = int(input())

while N > 1:
	for i in range(2, N + 1):
    	if N % i ==0:
        	print(i)
            N //= i
            break

break를 추가하지 않으면 N의 값이 i로 나눈 결과로 갱신되지 않아 다른 결과가 나온다.

반복문에서의 break와 continue

while 문이나 for 문을 사용하는 반복문에서 break를 사용하면 반복문 전체를 빠져나오게 된다.

반복문 전체가 아니라 해당 조건만 건너뛰게 하려는 경우 continue를 사용한다.

위의 문제 에서는 if 조건문이 아니라 변경된 N의 값으로 for 문의 범위를 재설정해야하기 때문에 continue가 아니라 break를 사용해야 한다.

2798. 블랙잭

from itertools import combinations를 사용했다.

import sys
from itertools import combinations

sys.stdin = open("2798_블랙잭.txt", 'r')
input = sys.stdin.readline

N, M = map(int, input().split())
cards = list(map(int, input().split()))
sum_arr = list(combinations(cards, 3))

max_sum = 0

for i in sum_arr:
    if (sum(i) > max_sum) & (sum(i) <= M):
        max_sum = sum(i)

print(max_sum)

1269. 대칭 차집합

리스트 list()는 서로 연산할 수 없기 때문에 연산하기 위해 집합 set()을 사용한다.

# 1269. 대칭 차집합
# https://www.acmicpc.net/problem/1269

import sys

sys.stdin = open("1269_대칭 차집합.txt", 'r')
input = sys.stdin.readline

N, M = map(int, input().split())
A = set(map(int, input().split()))
B = set(map(int, input().split()))

# print(len(A - B) + len(B - A))
print(len(set(A) ^ set(B)))

set(A) ^ set(B)로 대칭 차집합을 구할 수 있다.

0개의 댓글