처음엔 문제를 아예 이해 못했다.. 문제를 해석해보자면 입력된 수열 X = [4, 3, 6, 8, 7, 5, 2, 1] 이 있고 스택 Y에 1부터 순서대로 넣었다가 뒤에서부터 빼서 X 수열을 만들 수 있는지를 물어보는 거였다 push 한 번 하면 Y = [1], 두 번 하면 Y = [1, 2] 처럼 되고 출력된 예시처럼 push를 4번 한 이후에는 Y = [1, 2, 3, 4]가 되고, 다섯번째 출력처럼 pop을 하면 X[0]과 같은 값이 나온다 이런 식으로 push, pop 하면서 X[N]까지 하면 되는 것,, import sys N = int(sys.stdin.readline()) X = [] # 입력 받아서 리스트에 저장 for i in range(N): X.append(int(sys.stdin.r..
직사각형 w x h 내부의 점(x, y)에서 밖으로 탈출하는 최소 거리를 구하는 문제 w - x , h - y 중 작은 걸 고르면 된다 단!! 그 거리보다 x, y가 0으로 가는게 더 빠를 수도 있으니 총 네 가지 중 가장 작은 것 출력 import sys x, y, w, h = map(int, sys.stdin.readline().split()) print(min((w-x), (h-y), x, y))
언뜻 보기엔 진짜 아,, 이거 경우의 수 다 구해야하는건가 ㅜㅜ 10,000개를 언제 다 구하지 ㅠ 싶었는데 생각해보니까 그냥 1씩 더하면 될 것 같았다..!! N = int(input()) S = [] count = 666 # 첫번재 수는 알고있으니까,, while len(S) != N : # 구해야하는 수 까지만 X = list(str(count)) for i in range(len(X)-2): if X[i] == X[i+1] == X[i+2] == '6': # 세 수 연속으로 6인지 확인 if count not in S : # 중복 아닌지 확인 S.append(count) # 1씩 더해주기 count += 1 print(S[N-1]) 설마설마 했는데 진짜 됐다 ㅋㅋ 시간 초과 날 줄 알았는데 다른 ..
체스판 다시 칠하기.. 이런 식으로 주어지면 체스판으로 만들기 위해 다시 칠해야하는 정사각형 개수를 각각 다른 경우의 수 전부 구해서 비교하면 되는 문제 경우의 수 각각을 어떻게 표현해야 할 지 몰라서 for문 엄청 썼다가 아닌거같아서 다시 시작,, 결국 for문 4번 써서 성공 import sys N, M = map(int, sys.stdin.readline().split()) B = [] # 여기에 주어진 판 넣기 for i in range(N): B.append(list(sys.stdin.readline().rstrip())) # 리스트 안에 한 줄씩 리스트로 넣음 rec_min = [] # 최소 정사각형 개수 나오는 경우의 수 저장 for i in range(N-7) : # 위부터 for j in..
한수를 판별하는 함수를 만들어야 하는 문제! 99까지는 전부 포함되기 때문에 범위를 나눠서 했다 #한수 판별 함수 def han(num): if num//100 - (num%100)//10 == (num%100)//10 - (num%10): return num N = int(input()) if N < 100 : a = [i+1 for i in range(N)] #99까지는 모두 해당되기 때문에 모두 저장 else : a = [i+1 for i in range(99)] #99까지는 모두 해당되기 때문에 모두 저장 for i in range(100, N+1): #한수 판별 후 저장 if han(i) == i: a.append(i) print(len(a)) 이런 방법도 있었다..!! print(sum(i
처음에는 셀프 넘버에 어떤 규칙이 있을까 싶어서 그걸 구하려고 했는데, 그게 아니라 1~10,000까지의 수 중에서 생성자를 뺀 나머지들을 묶으면 쉬웠다 [1~10000까지의 수] - [1~10000까지 생성자가 있는 수들] = [(1~10000까지의)셀프 넘버들] 이 되는 것! 밑줄 친 부분을 만들기 위해 우선 d(n) 함수를 정의해야 한다. def d(n): return ( n + sum(map(int, str(n)))) sum 과 map 을 이용해 n + n의 각 자리수 리턴 (n + n//10000 + n//1000 ... 이런 식으로 해서 실패했었다 ㅋㅋㅋ) a = [] 라는 빈 리스트를 만들어 결과값을 하나씩 추가 a = [] for i in range(1, 10000): a.append(d(..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.