코테 준비
-
[프로그래머스] 스킬트리코테 준비/Stack, Queue 2024. 1. 30. 14:34
문제 이해하는데 시간이 좀 걸렸다.. def solution(skill, skill_trees): cnt=0 for i in range(len(skill_trees)): tree="" for j in skill_trees[i]: if j in skill: tree+=j #skill에 있는 문자만 뽑기 flag=True if tree=="": # 아예 skill에 없는 문자만 있으면 count flag=True else: if tree[0]!=skill[0]: #가장 첫 알파벳이 선행되어야함 flag=False if tree not in skill: # 순서대로 스킬을 쌓아야함 flag=False if flag==True: cnt+=1 return cnt
-
[프로그래머스] 롤케이크 자르기코테 준비/Stack, Queue 2024. 1. 30. 10:50
처음에는 for 문으로 topping을 돌면서 set의 길이를 비교해서 같을 때 count 하면 된다고 생각했지만 시간 초과함 def solution(topping): answer = 0 for i in range(len(topping)): if len(set(topping[:i]))==len(set(topping[i:])): answer+=1 return answer 시간초과를 줄이려면 딕셔너리 두개를 활용해서 Counter(a) 한 뒤, a에 있는 숫자를 하나씩 빼서 b로 옮기면서 비교해야함. def solution(topping): answer = 0 a={} b={} for i in topping: # a에 각 숫자 몇개 있는지 다 담기 if i in a: a[i]+=1 else: a[i]=1 f..
-
프로그래머스_삼각달팽이코테 준비/구현 2023. 12. 9. 18:05
달팽이 알고리즘! i: 이동 방향 바꾼 횟수 i%3==0 -> 밑으로 이동 (x+=1) i%3==1 -> 오른쪽으로 이동 (y+=1) i%3==2 -> 위로 이동(x-=1, y-=1) def solution(n): answer = [[0]*i for i in range(1,n+1)] x,y=-1,0 num=1 for i in range(n): for j in range(i,n): if i%3==0: # 아래 x+=1 elif i%3==1: # 오른쪽 y+=1 else: x-=1 y-=1 answer[x][y]=num num+=1 return [j for i in answer for j in i]
-
재귀_하노이의 탑 알고리즘코테 준비/구현 2023. 12. 8. 22:04
hanoi(N, start, to, via): start에서 to로 via를 거쳐 총 N개의 원반을 운반할 때 hanoi(3, ‘A’, ‘C’, ‘B’): 3개의 원반을 A에서 C로 B를 거쳐 옮기는 과정 hanoi(2,'A,',B','C'): 우선 두개의 원반을 B로 옮겨놓고 3번 원반을 C로 옮겨야함 hanoi(2, ‘B’, ‘C’, ‘A’): 3번 원반을 C로 옮긴 후 B에 있는 2개의 원반을 C로 옮김 해당 알고리즘을 토대로 코드를 작성해보면 def move(n,start,to): print("{}에서 {}로 이동".format(n,start,to)) def hanoi(n,start,to,via): if n==1: move(1,start,to) else: hanoi(n-1,start,via,to)..
-
프로그래머스_안전지대 (그래프)코테 준비/DFS, BFS 2023. 12. 8. 16:33
def solution(board): cnt = 0 dx=[-1,1,0,0,-1,-1,1,1] dy=[0,0,-1,1,-1,1,-1,1] visited=[[False]*len(board[0]) for _ in range(len(board))] for x in range(len(board)): for y in range(len(board[0])): if board[x][y]==1: cnt+=1 for i in range(8): nx=x+dx[i] ny=y+dy[i] if nx=len(board[0]): continue if board[nx][ny]==0 and not visited[nx][ny]: visited[nx][ny]=True cnt+=1 return len(board)*len(board[0])-cnt
-
프로그래머스_네트워크(bfs)코테 준비/DFS, BFS 2023. 11. 18. 02:41
네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. from collections import deque def solution(n, computers): answer = 0 visited=[False]*n def bfs(start,visi..
-
프로그래머스_조건에 맞는 사용자 정보 조회하기코테 준비/SQL 2023. 11. 16. 19:51
CONCAT, SUBSTR 중요! SELECT B.USER_ID, B.NICKNAME, CONCAT(CITY,SPACE(1),STREET_ADDRESS1,SPACE(1),STREET_ADDRESS2) AS 전체주소, CONCAT(SUBSTR(TLNO,1,3),'-',SUBSTR(TLNO,4,4),'-',SUBSTR(TLNO,8,4)) AS 전화번호 FROM USED_GOODS_BOARD A JOIN USED_GOODS_USER B ON A.WRITER_ID=B.USER_ID GROUP BY B.NICKNAME HAVING COUNT(B.NICKNAME)>=3 ORDER BY USER_ID DESC
-
[프로그래머스] [3차] n진수 게임코테 준비/문자열, 내장함수 2023. 10. 13. 20:00
# 10진수 -> n진수 변환 함수 def change(num,n): T = "0123456789ABCDEF" q, r = divmod(num, n) return change(q, n) + T[r] if q else T[r] def solution(n, t, m, p): answer = '' result='' i=0 j=0 while len(result)!=t: answer+=change(i,n) if len(answer)>p-1+(m*j): result+=answer[p-1+(m*j)] j+=1 i+=1 return result