[Programmers] 네트워크(BFS/DFS 풀이 | Python) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 전형적인 DFS 알고리즘을 이용해서 푸는 문제입니다. 0. 변수 초기화와 그래프 정보 visited = [False for _ in range(n + 1)] graph = [[] for _ in range(n + 1)] answer = 0 for i in range(len(computers)): for idx, val in enumerate(computers[i]): if i != idx and val == 1: graph[i + 1].append(idx + 1) 인접 행렬 방식으로 주어진 .. [BOJ] #2252 줄 세우기 (Python) 🌱 문제 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net 🌱 풀이 0. 입력 받기 n, m = map(int, input().split()) graph = [[] for _ in range(n + 1)] in_degree = defaultdict(int) for i in range(m): small, big = map(int, input().split()) graph[small].append(big) in_degree[big] += 1 학생수(n)과 키를 비교한 횟수.. [BOJ] #1976 여행가자(Python) 🌱 문제 1976번: 여행 가자 동혁이는 친구들과 함께 여행을 가려고 한다. 한국에는 도시가 N개 있고 임의의 두 도시 사이에 길이 있을 수도, 없을 수도 있다. 동혁이의 여행 일정이 주어졌을 때, 이 여행 경로가 가능한 것인 www.acmicpc.net 🌱 풀이 0. 입력 받기 및 변수 초기화 n = int(input()) m = int(input()) graph = [] parent = [i for i in range(n + 1)] for i in range(n): graph.append([idx + 1 for idx, i in enumerate(list(map(int, input().split()))) if i == 1]) plan = list(map(int, input().split())) 전체 .. [BOJ] #13144 List of Unique Numbers (Python) 🌱 문제 13144번: List of Unique Numbers 길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 프로그램을 작성하여라. www.acmicpc.net 🌱 풀이 0. 입력 받기 n = int(input().rstrip()) num_list = list(map(int, input().split())) 수열의 길이와 수열의 원소 값들을 입력받습니다. 1. 변수 초기화 result = 0 start, end = 0, 0 seq = [False] * 1000001 투포인터를 이용해 풀기 위해 num_list의 인덱스를 가리킬 start와 end를 각각 0으로 초기화 해줍니다. seq에 수열에 들어갈 수 있는 최댓값인 .. [프로그래머스] 입양 시각 구하기(2) (MySQL) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 0시부터 23시까지, 각 시간대별로 발생한 입양 건수를 조회하는 SQL문을 작성하세요. 🌱 풀이 1. 변수 설정 이 문제를 풀기 위해서는 변수를 하나 만들어야 합니다. MySQL에서 변수를 만드는 방법은 다음과 같습니다. SET @[변수명] := [초기값]; = 연산자를 써도 되지만 비교연산(같다)과 구분하기 위해서 :=를 사용하는 것이 좋습니다. SET @hour := -1; SELECT (@hour := @hour + 1) AS 'HOUR' FROM ANIMAL_OUTS WHERE @hour < .. [프로그래머스] 오프라인/온라인 판매 데이터 통합하기 (MySQL) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🌱 풀이 WHERE은 FROM에 묶인다고 생각합니다. 처음에 WHERE 절이 모든 SELECT 절에 한꺼번에 조건을 적용시킨다고 생각하고, WHERE 절을 마지막에만 적어주었더니 틀렸습니다. SELECT절마다 WHERE절 조건을 걸어주도록합니다! UNION은 2개 이상의 테이블에 존재하는 같은 성격의 값을 하나의 쿼리로 추출할 때 사용합니다. 쉽게 말해서, SELECT와 SELECT를 세로로 붙여줍니다. NULL AS USER_ID ONLINE_SALE에는 USER_ID가 있지만, OFFLINE_SA.. [프로그래머스] 서울에 위치한 식당 목록 출력하기 (MySQL) 🌱 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요. 🌱 풀이 FROM REST_INFO NATURAL JOIN REST_REVIEW natural join은 두개의 테이블의 공통된 컬럼을 기준으로 .. [BOJ] #18405 경쟁적 전염 (Python) 🌱 문제 18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치 www.acmicpc.net 🌱 풀이 0. 입력 받기 n, k = map(int, input().split()) graph = [] for i in range(n): graph.append(list(map(int, input().split()))) s, x, y = map(int, input().split()) 첫째줄에 시험관의 크기(n)와 바이러스의 종류의 개수(k)를 입력받습니다. 다음 n개에 줄에 시험관의 정보를 입력받습니다. 마지막 줄에 시간(s.. [BOJ] #2230 수 고르기 (Python) 🌱 문제 2230번: 수 고르기 N개의 정수로 이루어진 수열 A[1], A[2], …, A[N]이 있다. 이 수열에서 두 수를 골랐을 때(같은 수일 수도 있다), 그 차이가 M 이상이면서 제일 작은 경우를 구하는 프로그램을 작성하시오. 예를 들어 www.acmicpc.net 🌱 풀이 투 포인터 알고리즘을 이용해서 푸는 문제입니다. 핵심 아이디어는 두 포인터가 가리키는 값이 m이상일 때, result를 업데이트해 나가는 것입니다. 그리고 업데이트와 동시에 왼쪽 포인터를 하나 증가시킵니다. 차이가 더 줄여질 수 있는지 확인하기 위해서입니다. 두 포인터가 가리키는 값이 m미만이라면 오른쪽 포인터를 하나 증가시켜, 차이를 키워줍니다. 🌱 코드 # !/usr/bin/env python # -*- coding: u.. [BOJ] #9935 문자열 폭발 (Python) 🌱 문제 9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net 🌱 풀이 1. 입력 받기 str = deque(list((input().strip()))) bomb = list(input().strip()) 전체 문자열과 폭발 문자열을 입력으로 받습니다. 빠른 pop연산을 위해서 전체 문자열은 queue로 바꿔줍니다. 2. 변수 초기화 stack = [] stack은 결과값을 저장할 변수입니다. 3. 스택과 큐 사용 while str: ch = str.popleft() stack.append(ch) i.. [BOJ] #2473 세 용액 (Python) 🌱 문제 2473번: 세 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 www.acmicpc.net 🌱 풀이 [BOJ] #2470 두 용액 (python) 🌱 문제 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모 eunbin00.tistory.com 2470번 두 용액의 업그레이드 버전입니다. 문제는 같고 용액만 3개를 고르면 됩니다. 포인터가 추가적으로 하나 더 필요한데, 용액.. [BOJ] #2470 두 용액 (Python) 🌱 문제 2470번: 두 용액 첫째 줄에는 전체 용액의 수 N이 입력된다. N은 2 이상 100,000 이하이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상 1,000,00 www.acmicpc.net 🌱 풀이 이 문제는 투 포인터 알고리즘을 이용합니다. 투 포인터 알고리즘이란, 1차원 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해가면서 원하는 값을 구하는 알고리즘입니다. 1. 입력받기 n = int(input()) liquid = sorted(list(map(int, input().split()))) 입력은 두 줄이 주어집니다. 첫째 줄에는 전체 용액의 수인 n을 입력받고, 둘째 줄에서는 용액의 특.. 이전 1 2 3 4 5 6 7 ··· 16 다음