N, M = map(int, input().split()) #카드의 개수 N, 목표숫자 M을 입력받는다.
lst = list(map(int, input().split())) #카드의 숫자 N개를 입력받아 lst에 넣는다.
n_list = [] #N개의 카드를 3번씩 더할 수 있는 모든 경우에서 그 합이 M보다 작은 숫자들을 n_list에 넣기 위해 비어있는 리스트를 만들어 둔다.
for i in range(N):
for j in range(i + 1, N):
for k in range(j + 1, N):
sum = lst[i] + lst[j] + lst[k] #lst = [5, 6, 7, 8, 9]라면, 순서대로 sum = 5 + 6 + 7, 5 + 6 + 8, 5 + 6 + 9...로 진행된다.
if sum > M: #만약, sum이 M보다 클 경우, 구하고자 하는 값(n_list)은 M보다 작거나 같아야 하기 때문에
continue #반복을 계속하고,
else: #그렇지 않고, sum이 M보다 작을 경우,
n_list.append(sum) #n_list에 넣는다.
print(max(n_list)) #그 중 가장 M과 가까운 숫자를 출력하기 위해 M보다 작거나 같은 숫자들로 이루어진 리스트에서 가장 큰 숫자를 출력하면 된다.
N = int(input())
result = 0
for i in range(1, N + 1): #0은 정수가 아니므로, 1 ~ 주어진 값, N까지 i에 대입해 반복한다.
a = list(map(int, str(i))) #i를 문자열로 바꿔 각 자릿수(100의 자리 10의 자리 등)를 하나씩 정수로 바꿔 a라는 리스트에 담는다.
s = i + sum(a) #s는 i에 a리스트의 총합을 더한 값이다(=i의 분해합을 구한다.)
if (s == N): #i의 분해합인 s가 주어진 값 N과 같을 때,(=i가 1 ~ N 사이에 있는 N의 생성자라면,)
result = i #1부터 N까지 하나씩 반복해서 N의 생성자를 찾는 과정이기에 1부터 N사이에서 처음으로 나온 N의 생성자 값이 i이고, result = i이다.
break
print(result)
people = int(input())
people_list = []
for _ in range(people): #사람 인원 수만큼 아래를 반복한다.
x, y = map(int, input().split()) #몸무게와 키를 x와 y에 입력한다.
people_list.append((x, y)) #(몸무게, 키)형태로 몸무게와 키값을비어 있는 people 리스트에 넣는다.
for i in people_list: #((몸무게, 키), (몸무게, 키), (몸무게, 키),..)를 i에 (몸무게, 키)를 하나씩 대입해 반복한다.
rank = 1 #등수는 1부터 시작해 if문의 조건을 통해 1씩 더한다.
for j in people_list: #i와 같은 형태((몸무게, 키), (몸무게, 키), (몸무게, 키),..)로 j에 대입해 반복한다.
if i[0] < j[0] and i[1] < j[1]: #i[0]과 j[0]은 사람들의 몸무게 값이고, i[1]과 j[1]은 사람들의 키값이다.
rank += 1 #i와 j가 people_list의 사람들의 몸무게와 키값을 서로 비교하며 비교당하는 값이 몸무게와 키가 더 작을 때, 덩치가 큰 사람이 나보다 한 사람 있다라는 뜻으로 등수에 1을 더한다.
print(rank, end='') #해당 비교당하는 사람의 등수를 end=''를 통해 한 칸씩 띄워 출력해라.
N, M = map(int, input().split())
original = []
count = []
for _ in range(N): #주어진 값 N은 행렬의 행의 길이로 행의 길이만큼 행을 반복 입력하게 한다.
original.append(input()) #주어진 값들 모두를 original 리스트에 넣는다.
for a in range(N - 7): #N*M만큼의 보드를 받아와서 적어도 8*8(체크판의 크기)로 잘라야 하기 때문에 행으로 N-7=a,
for b in range(M - 7): #열로 M-7=b만큼 고정시켜 a는 행, b는 열의 시작점을 가르키고, 하나의 체크판을 검사할 수 있다.
index1 = 0 #index1은 'W'로 시작할 경우 바뀐 체스 판의 갯수를 세기 위함이고
index2 = 0 #index2는 'B'로 시작할 경우 바뀐 체스 판의 갯수를 세기 위함이다.
for i in range(a, a + 8): #행의 시작점, a
for j in range(b, b + 8): #열의 시작점 b를 기준으로 모두 8칸씩 체크한다.
if (i + j) % 2 == 0: #체크 중인 현재 행의 번호 i, 현재 열의 번호 j의 합이 짝수이면 시작점의 색깔과 같아야 하고, 홀수이면 시작점의 새깔과 다른 색이어야 한다. 이를 이용하면 만약 (i+j)의 합이 짝수일 경우, W가 아니라면 index1에 1을 더하고, B가 아니라면 index2에 1을 더한다. else문은 (i+j)의 합이 홀수인 경우로, 시작점의 색깔과 다르지 않은 경우를 체크한다.
if original[i][j] != 'W':
index1 += 1
if original[i][j] != 'B':
index2 += 1
else:
if original[i][j] != 'B':
index1 += 1
if original[i][j] != 'W':
index2 += 1
count.append(min(index1, index2)) #'W'로 시작할 경우와 'B'로 시작할 경우 바뀐 체스판의 수 중 작은 수를 count 리스트에 더해준다.
print(min(count)) #모든 경우의 수를 다 체크한 후, count 중 제일 작은 수를 출력하고 프로그램을 종료한다.
출처.
https://bambbang00.tistory.com/43
https://god-gil.tistory.com/62
n = int(input()) #순번을 n에 입력하고,
cnt = 0 #순서를 세어줄 변수 cnt를 변수선언한다.
six_n = 666 #six_n은 666이 들어가는 숫자 중 가장 작은 숫자이므로, 굳이 1부터 시작할 필요 없이 six_n을 666으로 변수선언해 범위를 줄일 수 있다.
while True:
if '666' in str(six_n): #연속된 숫자 666이 whilw문을 통해 반복될 숫자에 포함되어 있는지 확인하기 위해 정수 666이 아닌 문자열 '666'과 정수 six_n이 아닌 문자열 six_n에 '666'이 포함되어 있는지 확인하고,
cnt += 1 #있다면, 그 수는 우리가 찾고자 하는 cnt번째 666을 포함한 숫자이므로 cnt에 1을 더한다.
if cnt == n: #또한, cnt(666을 포함한 숫자들의 순서)가 주어진 입력값 n(찾고자 하는 n번째)과 같다면
print(six_n) #해당 숫자 six_n을 출력해라.
break #if문은 그 즉시 종료한다.
six_n += 1 #위 2개의 if문을 six_n이 충족하지 못할 경우(666을 포함하지 않는 숫자일 경우), 1씩 더해 666을 포함하는 숫자가 나올 때까지 while문을 통해 반복할 것이다.