
💡 문제 해결 아이디어 첫번째 수만 알아내면, [첫번째 수, ..., 첫번째수 + num] 의 리스트만 반환하면 된다. 첫번째 수는 중간값(total/num)에서, (num-1)/2 를 빼주면 된다. 대신 range(start, end)에서 start와 end에는 정수만 들어갈 수 있으니, int()를 잊지 말자! 💻 작성된 코드 def solution(num, total): start = int(total/num - (num-1)/2) return [integer for integer in range(start, start+num)]

💡 문제 해결 아이디어 중요한 점: 원본 보드에 수정을 가하면 안된다!! (원본 보드에 수정을 가하면, 지뢰가 없는 위험지대를 지뢰가 있다고 착각할 수 있다.) product함수를 이용해, 깔끔하게 코딩해본다. 💻 작성된 코드 from itertools import product def solution(board): size = len(board) # 원본 board가 변경되는 것을 막기 위해, 별도의 보드를 만든다. board_copy = [[0] * size for _ in range(size)] # 주변 셀들을 탐색하기 위한 준비. case = [-1, 0, 1] # 보드의 각 셀에 대해서 반복한다. for x, y in product(range(size), range(size)): if board..

💡 문제 해결 아이디어 4개의 점을 2쌍으로 나눠야한다. 줄세워서 앞의 2점, 뒤에 2점으로 나누면 되지 않을까? 💻 작성된 코드 # 주어진 요소들의 모든 순열 제공하는 Python 내장 함수 from itertools import permutations def solution(dots): # 기울기 계산해주는 함수. def calc_slope(pt1, pt2): return (pt2[1] - pt1[1]) / (pt2[0] - pt1[0]) # 모든 순열의 경우에 대해서 for four_poitns in permutations(dots, 4): pt1, pt2, pt3, pt4 = four_poitns # 앞 2점의 기울기와 뒤 2점의 기울기가 같으면 return 1 if calc_slope(pt1, ..

💡 문제 해결 아이디어 단어에서 옹알이를 딱 한번! 밖에 못한다. 그렇다면, 단어가 옹알이로만 이루어져 있다면, 단어 길이에서 옹알이의 길이를 다 빼주면 0이 될것이다! 💻 작성된 코드 def solution(babbling): # 옹알이 리스트 possible = ["aya", "ye", "woo", "ma"] # 발음할 수 있는 단어 개수 answer = 0 for word in babbling: length = len(word) for pos in possible: # 만약 단어에 옹알이가 포함된다면, 옹알이의 길이를 뺴준다. if pos in word: length -= len(pos) # 만약 포함된 옹알이의 길이를 다 뺐을 때, 단어에 남은 글자가 없다면 (길이가 0이라면) if length ..

💡 문제 해결 아이디어 각 사이즈별로 개수를 잰다. 개수가 가장 많은 사이즈의 귤부터 담는다. 박스가 꽉 찼을 때, 몇가지 사이즈의 귤을 담았는지 반환한다 💻 작성된 코드 # 파이썬 내장함수 Counter 활용 from collections import Counter def solution(k, tangerine): # 사이즈별 개수 세기. counter = Counter(tangerine) # 사이즈별 개수를 내림차순으로 정렬. num_of_tangerine = sorted(counter.values(), reverse=True) # 박스 안에 담은 귤의 개수. in_the_box = 0 # enumerate 활용하여 몇가지 종류의 귤을 넣었는지 확인. for idx, num in enumerate(n..

💡 문제 해결 아이디어 하나의 세로줄에서 몇개의 점이 나오는지 세는 방식을 생각했다! 아래 원을 예시로 k=1이고 d=3인 경우라 생각한다면, x=0일때는 원의 y좌표가 3이기에 (0,1,2,3) 총 4개 점이 가능하다. x=1일때는 원의 y좌표가 2.82... 이기에 (0, 1, 2) 총 3개 점이 가능하다. x=2일때는 원의 y좌표가 2.236... 이기에 (0, 1, 2) 총 3개 점이 가능하다. x=3일때는 원의 y좌표가 0이기에 (0) 총 1개 점이 가능하다. 💻 작성된 코드 def solution(k, d): # 시작하는 x좌표. x = 0 # 점의 개수 answer = 0 # x가 d이하인 동안, while x

💡 문제 해결 아이디어 DFS와 BFS의 기본 원리와 구조에 대해서 이해하면 문제를 풀기 편하다! DFS 간단설명 (깊이 우선 탐색) 일단 느낌가는대로 맵을 막 돌다가, 막다른길이 나오면 다시 갈림길로 돌아간다. 또 탐색하고 또 막히면 이번엔 갈림길의 다른길로 가고... 해당 갈림길에서 더이상 갈곳이 없으면 더 뒤로 돌아가서 다시 찾아본다. 그래서 깊이 우선 탐색이다. BFS 간단설명 (너비 우선 탐색) 갈림길이 발생하면, 각 갈림길들을 대기열에 등록해놓는다. 대기열에서 맨 앞에 있는 곳을 탐색하고, 갈 수 있는 곳이 있으면 대기열의 맨 뒤에 등록해놓는다. 대기열 방식이기 때문에, 거리가 1인 지점, 거리가 2인 지점, 거리가 3인 지점... 이렇게 거리순으로 확인하게 된다. 우리는 최단거리를 찾는 것이..

💡 문제 해결 아이디어 하나의 정수를 1. 더하는 경우 2. 빼는 경우 두가지만 있다. 2가지 경우를 계산하고, 각각에 대해서 그 다음 정수도 더하고 빼는 경우를 계산해 나간다. 그럼 총 4가지 경우가 될 것이고, 각각에 대해서 또.... 이렇게 반복(재귀)적으로 진행한다! 계산해나가며 모든 정수를 다 연산했을 때, 타겟넘버와 연산값이 같다면 성공한 케이스 +1. 💻 작성된 코드 def solution(numbers, target): # 재귀적으로 사용할 함수 선언. def plus_or_minus(total, numbers, target): # 만약 리스트에 정수들이 남아있다면, if numbers: # 리스트의 마지막 요소를 더하는 경우를 다시 탐색한다. plus_case = plus_or_minus..
- Total
- Today
- Yesterday
- 프로그래머스
- 스테이블디퓨전
- 프로그래머스 가장 가까운 글자
- 연습문제
- 프로그래머스 문자열 나누기
- leetcode
- 그리디
- 프로그래머스 아이템줍기
- Attend and Excite
- 큐
- stablediffusion
- 파이썬
- 코딩테스트
- BFS
- 알고리즘
- heapq
- 프로그래머스 연속된수의합
- 가장 가까운 글자 파이썬
- 디펜스
- 문자열 나누기 파이썬
- python
- OpenAI
- Low Manifold Theory
- 인공지능
- Stable Diffusion
- heap
- ChatGPT
- 프로그래머스 파이썬
- 프로그래머스 햄버거 만들기
- 코테
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |