일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- js to ts
- OS
- Spring
- memory
- 자료구조
- 공부
- 협업
- 타입스크립트
- 코드업
- 프로그래머스
- web
- codeup
- CPU 스케줄링
- react
- Java
- Operating System
- 토이프로젝트
- react-redux
- 알고리즘
- 정렬
- 백준
- error
- 리덕스장바구니
- 파이썬
- 기초100제
- Redux
- C++
- 일상
- 스프링
- 분할메모리할당
- Today
- Total
목록백준 (138)
감자튀김 공장🍟
✔ 문제 https://www.acmicpc.net/problem/1620 1620번: 나는야 포켓몬 마스터 이다솜 첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 www.acmicpc.net ✔ 풀이 import sys input = sys.stdin.readline n, m = map(int, input().split()) poket = {} for i in range(1, n+1): x = input().rstrip() poket[i] = x poket[x] = i for j in range(m): x = input().rstrip() if x..
✔ 문제 ✔ 풀이 🥺 시간초과 import sys input = sys.stdin.readline n, m = map(int, input().split()) s = [input() for _ in range(n)] count = 0 for _ in range(m): ms = input() if ms in s: count += 1 print(count) 😎 정답 코드 import sys input = sys.stdin.readline n, m = map(int, input().split()) s = set([input() for _ in range(n)]) count = 0 for _ in range(m): ms = input() if ms in s: count += 1 print(count) ✔ 설명 입..
✔ 문제 ✔ 풀이 😥 시간 초과 import sys input = sys.stdin.readline n = int(input()) n_cards = list(map(int, input().split())) m = int(input()) m_cards = list(map(int, input().split())) res = [0] * m for i in range(m): if m_cards[i] in n_cards: res[i] = 1 print(*res) 🥺 정답 코드 import sys input = sys.stdin.readline n = int(input()) n_cards = list(map(int, input().split())) m = int(input()) check = list(map(int..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) name = 666 count = 0 while True: if '666' in str(name): count += 1 if count == n: print(name) break name += 1 ✔ 설명 666, 1666, 2666, 3666 이렇게 n-1+666 이렇게 진행되는 것이 아니라 6660이나 6661도 생각해봐야 한다. 즉, 1~10000 까지의 숫자 중에서 666만 들어가면 되는 것이다. 1부터 10000까지의 숫자 중에서 666이 들어간 숫자를 찾고 이 숫자가 몇 번째로 666이 포함된 숫자인지 세면 된다. ✔ 후기 다른 사람들도 그랬겠지만 나도 맨 처음에는 n-1+666..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n, m = map(int, input().split()) board = [list(map(str, input())) for _ in range(n)] res = [] for a in range(n-7): for b in range(m-7): w_count = 0 b_count = 0 for i in range(a, a+8): for j in range(b, b+8): if (i + j) % 2 == 0: # 0,1로 구분해 b,w 중 어떤 것을 색칠할 것인지 구분 if board[i][j] != 'W': # B이면 w_count += 1 # W로 색칠 else: # W이면 b_count += 1 # B로 색칠 else..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) person = [list(map(int, input().split())) for _ in range(n)] res = [] for i in range(n): count = 0 for j in range(n): if person[i][0] < person[j][0] and person[i][1] < person[j][1]: count += 1 res.append(count + 1) print(*res) ✔ 설명 자신을 포함하여 키와 몸무게를 다른 사람과 비교한다. 키와 몸무게 둘 다 자신보다 클 경우, count += 1을 하면 된다. ✔ 후기 등수가 왜 이렇게 나오는지 잘 이해가 안됐다...
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) res = 0 for i in range(1, n+1): num = list(map(int, str(i))) res = i + sum(num) if res == n: print(i) break if i == n: print(0) break ✔ 설명 예제 입력 1을 보면 216을 입력 받았는데 왜 답이 198이냐? 싶을 수 있다. 보면 198 + 1 + 9 + 8 = 216 이기 때문에 198이 216의 가장 작은 분해합이다. 따라서 n을 입력받고 1부터 n까지 for문을 돌려서 현재 i의 각 자리수 + i 를 더한 값이 n과 같다면 해당 값을 출력하면 된다. ✔ 후기 예시가 3자리 수라서 ..
✔ 문제 ✔ 풀이 import sys from itertools import combinations input = sys.stdin.readline n, m = map(int, input().split()) numbers = list(map(int, input().split())) combi = list(combinations(numbers, 3)) sum_combi = [] for i in combi: sum_combi.append(i[0] + i[1] + i[2]) max_n = 0 for i in sum_combi: if max_n < i
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline def hanoi(x, start, end): if x > 1: hanoi(x-1, start, 6 - start - end) print(start, end) if x > 1: hanoi(x-1, 6 - start - end, end) n = int(input()) print(2**n - 1) hanoi(n, 1, 3) ✔ 설명 하노이탑 규칙과 설명은 아래 유튜브를 참고하면 된다. www.youtube.com/watch?v=FYCGV6F1NuY 6 - start - end 하는 이유가 뭔가 싶었는데 기둥의 번호를 1, 2, 3으로 준다면 기둥의 합이 1+2+3 = 6이라 6으로 주고 시작하는 것이다. 동영상에서 나오는 ..
✔ 문제 ✔ 풀이 import sys input = sys.stdin.readline n = int(input()) def star(x): if x == 3: return ["***", "* *", "***"] arr = star(x // 3) stars = [] for i in arr: stars.append(i * 3) for i in arr: stars.append(i + ' ' * (x // 3) + i) for i in arr: stars.append(i * 3) return stars print('\n'.join(star(n))) ✔ 후기 전에 풀었던 피보나치 같은 재귀는 쉽게 풀었는데 이번 문제는 어려웠다. 구글링 해서 정답 코드를 보긴 했지만... ^_ㅠ 제일 작은 패턴은 n = 3일 때부..