def solution(n): answer = 0 n1,n2 = 1,1 if n == 2: return 1 else: for i in range(3,n+1): answer = (n1 + n2)%1234567 n1 = n2 n2 = answer return answer 처음엔 재귀함수로 피보나치를 풀었는데 7번부터 실패, 시간초과가 났다!! 그래서 반복문으로 처리했다. 첫 번째 수는 그 다음 수를 넣어주고 두 번째 수에는 answer값을 넣어주었다. 조건문 n ==2일때만 있는 이유는 입력 값이 2이상이라고 했기 때문!
from math import gcd def lcm(x,y): return x*y // gcd(x,y) def solution(arr): # 숫자 두개씩을 lcm함수에 넣어서 반환받기 answer = arr[0]*arr[1]//gcd(arr[0],arr[1]) for i in range(2,len(arr)): answer = lcm(answer,arr[i]) return answer print(solution([2,6,8,14])) 파이썬은 gcd()함수가 있어서 최대 공약수를 자동으로 구해준다. 그래서 이것을 사용해야겠다고 생각했고 최소 공배수 = 두 숫자의 곱 / 최대 공약수 이기 때문에 맨 앞 두 숫자들을 먼저 뽑아서 그것들 끼리 최소 공배수를 구해줬다. -> 배열 0번째,1번째 것으로 그러고 여기..
def solution(brown, yellow): answer = [] x,y = 0,3 cal= (brown + 4)//2 while 1: x = cal - y if x = y: #조건에 맞으면 if x*y - brown == yellow: answer.append(x) answer.append(y) break y += 1 return answer print(solution(8,1)) 둘레= 가로 *2 + (세로-2(가로에서 카운트한 모서리부분) ) * 2 이기 때문에 가로 : x , 세로 : y brown = 2x + 2(y-2) 조건은 x>=y 과 y >2이다. y>2인 이유는? 세로가 3개 이상 이어야만 가운데 부분이 생기기 때문!! 2개면 가운데 부분이 생길 수가..
from collections import deque # 상하좌우 튜플로 고정 D = ((-1,0),(1,0),(0,-1),(0,1)) def bfs(place,row,col): visited = [[False for _ in range(5)] for _ in range(5)] q = deque() # 지금 위치 방문 마킹 visited[row][col] = True # 행,열 좌표, 거리 q.append((row,col,0)) while q:#큐가 존재할 때 curr = q.popleft() #거리가 2를 초과했을 때 패스 if curr[2] > 2: continue #거리가 0 이 아닐 때 = 자기 자신이 아닐 때와 #P값을 만났을 떄 if curr[2] != 0 and place[curr[0]][c..
위클리 챌린지 2주차 def solution(scores): answer = '' for j in range(len(scores)): cnt = len(scores) add = 0 high = 0 low = 101 for i in range(len(scores)): add += scores[i][j] if i == j: continue if high scores[i][j]: low = scores[i][j] if scores[j][j] > high or scores[j][j] = 90: answer += 'A..
def solution(priorities, location): answer = 0 order = [0]*len(priorities) order[location] = 1 while 1: m = max(priorities) num = priorities.pop(0) ord = order.pop(0) if num >= m and ord == 1: answer += 1 return answer if num >= m and ord == 0: answer += 1 continue else: priorities.append(num) order.append(ord) order라는 리스트를 모두 0으로 만들어준다. location은 찾아야할 인덱스가 있는 것 이므로 order[location] = 1로 해준다. 그러면..
25번부터 32번까지 시간초과난 코드. 아마 2중 포문을 사용해서 시간초과가 난 것같다. def solution(record): #딕셔너리를 사용하여 Enter Change 일때 그에 맞는 닉네임으로 해시의 값을 바꾸면 됩니다 answer = [] res = [] for i in record: temp = i.split() res.append(temp) for i in range(len(res)): for j in range(0, i): if res[i][1] == res[j][1]: if res[i][0] == 'Change' or res[i][0] == 'Enter': res[j][2] = res[i][2] else: #Leave res[i].append(res[j][2]) for i in range..
위클리 문제라고해서 풀어봤다 def solution(price, money, count): res = 0 for i in range(1,count+1): res += price*i if res >= money: answer = res -money else: answer = 0 return answer 그냥 반복문을 count번만큼 돌면서 가격을 곱한것을 다 더해주었다가 그 값이 가지고 있는 돈money보다 커지면 money를 빼서 리턴시킨다. 만약 res가 money보다 작을 수도 있으니까 그럴 땐 돈이 부족하지 않다는 의미이다. 그래서 리턴 0
def solution(n, lost, reserve): #set으로 중복(같은거) 제거 lost2 = list(set(lost) - set(reserve)) reserve2 = list(set(reserve) - set(lost)) for i in reserve2: if i-1 in lost2: lost2.remove(i-1) continue elif i+1 in lost2: lost2.remove(i+1) continue # print(lost2) # print(reserve2) answer = n - len(lost2) return answer 와우우 이거 쉬운문젠데 오래걸렸다. 내 문제는 문제를 꼼꼼히 못 읽었다는 점! # 여벌 체육복을 가져온 학생이 체육복을 도난당했을 수 있다.. # 그렇다면...
def solution(array, commands): answer = [] for i in range(len(commands)): start = commands[i][0] - 1 end = commands[i][1] n = commands[i][2] - 1 new = sorted(array[start:end]) answer.append(new[n]) return answer 단순하게 문제에 나와있는대로 풀었다! command에서 시작점과 끝점,몇 번째 수를 받고 리스트 슬라이싱을 해서 정렬을 해줬다. 그리고 n번째 값을 answer에 append해줌!
- Total
- Today
- Yesterday
- git
- SSAFY
- 세션 스토리지
- N과M
- 독학
- 백준
- 파이썬
- SSAFY퇴소
- 위클리챌린지2주차
- 안드로이드스튜디오
- 알고리즘
- DOM
- Java
- vue.js
- AWS
- SQL
- javascript
- commit되돌리기
- vue
- 비동기패턴
- splide
- 배포
- 자바
- 프로그래머스
- Python
- 싸피
- SWEA
- Pyhton
- 트리
- django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |