Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 파이썬
- 프로그래머스
- 스터디
- hacking
- 포렌식
- 자라나는새싹
- Algorithm
- 알고리즘
- 드림핵
- 워게임
- C언어
- command
- 풀이
- 디지털 포렌식
- XSS
- 문제풀이
- Python
- BaekJoon
- Web
- Programmers
- 웹해킹
- webhacking.kr
- c
- CSRF
- 자라나는 새싹
- 인프런
- 백준
- dreamhack
- WarGame
- WHS
Archives
- Today
- Total
Hoin's security
Baekjoon 2231번 분해합, 2798번 블랙잭 본문
2231번 분해합

123이라는 입력값이 들어왔을 때 이걸 쪼개서 다른 변수에 저장하게끔 만들어주면 될 것 같다.
n = int(input()) #분해합을 입력값으로 받음
for i in range(1, n+1): #생성자 찾기
num = sum((map(int, str(i)))) # i의 각 자릿수를 더함
num_sum = i + num # 분해합 = 생성자 + 각 자릿수의 합
# i가처음으로 분해합과 입력값이 같을때가 가장 작은 생성자를 가짐.
if num_sum == n:
print(i)
break
if i == n: #i와 입력값이 같으면 생성자 없는거.
print(0)
분해합 값을 입력받고 1부터 분해합까지의 범위 안에서 반복문을 작동시켜준다.
i의 각 자릿수를 모두 더하여 분해합을 구한다. 반복마다 i의 각 자릿수를 모두 더하여 분해합을 계산하는데 분해합을 구하기 위해서는 생성자 i와 i의 각 자리수 합이 필요하기 때문에 각 자리수 합도 구해준다. 분해합이 입려값이랑 같으면 생성자를 찾은거니까 반복문을 종료하고 생성자를 찾지 못했다면 0을 출력한다.


2798번 블랙잭

N, M = map(int, input().split()) #카드 개수 N과 합의 한도 M을 입력받음.
lst = list(map(int, input().split()))#N개 만큼의 카드에 쓰여 있는 수를 입력받음.
nlst = []
#중첩 반복문을 사용해서 모든 경우의 수의 합을 구해서 새로운 리스트에 넣음.
for i in range(N):
for j in range(i+1, N):
for k in range(j+1, N):
three = lst[i] + lst[j] + lst[k]
if three > M:#모든 경우의 수의 합이 M을 초과하면 반복문 진행, 작으면 새로운 리스트에 해당 값 추가.
continue
else:
nlst.append(three)
print(max(nlst))#max 사용해서 가장 큰 값 출력.
코드 설명은 주석으로 달아두었다.
중첩 반복문 사용이 어려웠다. + 구글링의 도움.
그래도 코드 흐름을 익힐 수 있어서 좋았던 문제다.
'Algorithm > Baekjoon' 카테고리의 다른 글
| Baekjoon 1520번 내리막길, 2629 양팔저울 - Python 문제 풀이 (1) | 2024.04.03 |
|---|---|
| 백준 15651번 N과 M (3), 2839번 설탕 배달 파이썬 풀이 (2) | 2023.11.22 |
| Baekjoon 15649번 N과 M(1), 2566번 최댓값 파이썬 풀이 (1) | 2023.11.15 |
| 2. [5주차] 백준 알고리즘 문제풀이 공 바꾸기 (10813번), 큐 2 (18258번) (0) | 2023.11.02 |
| 2.[4주차]백준 숫자의 개수 2577번, 블랙잭 2798번 (1) | 2023.11.01 |