본문 바로가기
728x90

Programming56

[프로그래머스] 중복 제거 SELECT COUNT(DISTINCT NAME) AS countFROM ANIMAL_INS중복제거를 위해 DISTINCT를 잊지말자 2025. 4. 8.
[프로그래머스] 조이스틱 기본 아이디어오른쪽 갔다가 왼쪽으로 돌아가는 경우왼쪽으로 가다가 오른쪽으로 돌아가는 경우def solution(name): move = len(name) - 1 cnt = 0 for chr in name: cnt += min((ord(chr) - ord('A')), 26 - (ord(chr) - ord('A'))) for i in range(len(name)): next_idx = i + 1 while next_idx 글자 구현은 엄청 쉬웠고위치 구현이 헷갈렸는데, 단순하게 생각하고 일단 구현하는게 중요한 것 같다 엣지케이스부터 자꾸 떠올리니 밑도끝도 없이 헷갈려했다 2025. 4. 8.
[프로그래머스] 소수 찾기 기본 아이디어조합?은 아니고 순열순열/조합 라이브러리 써야지맨 처음 숫자가 0인 케이스 주의해야지from itertools import permutationsdef check_prime(n): if n 소수: 1과 자기 자신만을 약수로 가지는 1보다 큰 자연수소수판별 함수를 따로 두는 것이 좋다n = int(''.join(list(p))) 리스트형태의 숫자들을 하나의 값으로 합쳐내기 위해 이렇게 했다. 2025. 4. 7.
[백준] 2606 | 바이러스 기본 아이디어딕셔너리로 노드 연결 관계 정의해주기bfsfrom collections import dequedef solution(graph): queue = deque([1]) visited = set() visited.add(1) while queue: root = queue.popleft() for neighbor in graph.get(root, []): if neighbor not in visited: queue.append(neighbor) visited.add(neighbor) return len(visited) - 1if __name__ == "__main__": .. 2025. 4. 7.
[프로그래머스] 게임 맵 최단거리 기본 아이디어bfsfrom collections import dequedef solution(maps): n = len(maps) m = len(maps[0]) ax = [-1, 0, 1, 0] ay = [0, 1, 0, -1] queue = deque([(0, 0, 1)]) visited = set() visited.add((0, 0)) while queue: x, y, cnt = queue.popleft() if x == n - 1 and y == m - 1: return cnt for dx, dy in zip(ax, ay): nx, ny = x + dx, y + dy .. 2025. 4. 7.
[프로그래머스] 재구매가 일어난 상품과 회원 리스트 구하기 설명SELECT USER_ID, PRODUCT_ID최종적으로 보고싶은 컬럼(주의) 이 시점에서 SELECT 는 "GROUP BY 가 끝난 후" 의 데이터를 출력FROM ONLINE_SALE데이터를 조회할 테이블GROUP BY USER_ID, PRODUCT_IDUSER_ID 와 PRODUCT_ID 의 조합으로 묶음GROUP BY 에 여러 컬럼을 넣으면, 각각의 조합이 하나의 그룹이 됨HAVING COUNT(*) >= 2그룹핑된 결과에 대해 필터링HAVING 은 그룹핑 이후 집계 함수가 포함된 조건을 쓸 때 사용ORDER BY USER_ID ASC, PRODUCT_ID DESC최종 결과를 정렬최종 코드SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USE.. 2025. 4. 6.
728x90