[개념/Python] DFS VS BFS DFS, BFS 이해DFS, BFS의 차이를 드라마로 비유하면 이해가 쉽다 드라마를 볼때 유형은 두 가지로 나뉘는데, 1. 끝나길 기다리고 몰아본다 -> DFS2. 드라마 여러개를 하나씩 본다 -> BFS DFS, BFS : "그래프 탐색 알고리즘"그래프 : 여러 개체들이 연결되어 있는 자료구조탐색 : 특정 개체를 찾기 위한 알고리즘 대표 문제 유형1. 경로탐색 유형(최단거리, 시간)2. 네트워크 유형(연결)3. 조합 유형(모든 조합 만들기) [프로그래머스] 타겟 넘버https://school.programmers.co.kr/learn/courses/30/lessons/43165 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programme..
[개념/Python] Floyd-Warshall algorithm, 플로이드 워샬 알고리즘 # 무한대를 나타내는 큰 수 (도달할 수 없는 경로를 표현할 때 사용)INF = int(1e9)# 노드(정점)의 개수number = 4# 입력 그래프: 인접 행렬로 표현# 각 값은 i번 노드에서 j번 노드로 가는 비용# INF는 i에서 j로 직접 연결된 경로가 없음을 의미함a = [ [0, 5, INF, 8], # 0번 노드에서 다른 노드로 가는 비용 [7, 0, 9, INF], # 1번 노드에서 다른 노드로 가는 비용 [2, INF, 0, 4], # 2번 노드에서 다른 노드로 가는 비용 [INF, INF, 3, 0] # 3번 노드에서 다른 노드로 가는 비용]def floyd_warshall(): # 결과 그래프 초기화: 입력 그래프를 그대로 복사하여..
[개념/Python] dijkstra algorithm, 다익스트라 알고리즘 힙 사용 이유 : 힙 개념 정리하기https://chaenilog.tistory.com/105 import sysimport heapq # 우선순위 큐(최소 힙)를 위한 모듈input = sys.stdin.readline # 빠른 입력을 위한 설정INF = int(1e9) # 무한대를 의미하는 값 (예: 10억)# 다익스트라 알고리즘 함수 정의def dijkstra(start, graph, distance): q = [] # 우선순위 큐 (힙) 초기화 # (거리, 노드번호) heapq.heappush(q, (0, start)) # 시작 노드까지의 거리 = 0을 힙에 삽입 distance[start] = 0 # 시작 노드까지의 최단 거리는 0 ..
[개념/Python] heap, 힙 구현 import sysimport heapqinput = sys.stdin.readlinedef heapsort(iterable): h = [] result = [] # 모든 원소를 차례대로 힙에 삽입 for value in iterable: heapq.heappush(h, value) # value를 h에 추가 # 힙에 삽입된 모든 원소를 차례대로 꺼내어 담기 for i in range(len(h)): result.append(heapq.heappop(h)) return resultn = int(input())arr = []for i in range(n): arr.append(int(input()))res = heapsort(arr)fo..
[Python] zip() 함수 Python의 zip() 함수는 여러 개의 iterable(리스트, 튜플 등)을 병렬적으로 묶어서 튜플의 형태로 반환해주는 함수.🔹 zip() 함수 기본 개념zip(iterable1, iterable2, ...)각 iterable의 같은 인덱스에 위치한 요소들을 묶어 (요소1, 요소2, ...) 형태의 튜플을 생성가장 짧은 iterable의 길이에 맞춰서 동작✅ 예제 1: 리스트 두 개 묶기names = ['철수', '영희', '민수'] scores = [90, 85, 88] zipped = zip(names, scores) print(list(zipped))🔸 출력[('철수', 90), ('영희', 85), ('민수', 88)]✅ 예제 2: 반복문에서 사용 names = ['철수', '영희', '민..
[프로그래머스/Python] 전화번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119박준영 : 97 674 223지영석 : 11 9552 4421전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다.입출력 예제phone_b..
[백준1546/Java] 평균 https://www.acmicpc.net/problem/1546문제세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다.예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다.세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오.입력첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다.출력첫째 줄에..
[백준5597/Java] 과제 안 내신 분..? https://www.acmicpc.net/problem/5597문제X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다.교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오.입력입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다.출력출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그 다음 출석번호를 출력한다.예제 입력 1 복사3145796101112131415161718192021222324252627282930예제..
[백준2480/Java] 주사위 세개 https://www.acmicpc.net/problem/2480문제1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다.같은 눈이 3개가 나오면 10,000원+(같은 눈)×1,000원의 상금을 받게 된다.같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)×100원의 상금을 받게 된다.모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)×100원의 상금을 받게 된다.예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3×100으로 계산되어 1,300원을 받게 된다. 또 3개의 눈이 2, 2, 2로 주어지면 10,000+2×1,000 으로 계산되어 12,000원을 받게 된다. 3개의 눈이 6, 2, 5로 주어지면 그중 가장 큰 값이 ..
[백준1978/Java] 소수 찾기 https://www.acmicpc.net/problem/1978문제주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오.입력첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다.출력주어진 수들 중 소수의 개수를 출력한다.예제 입력 1 복사41 3 5 7예제 출력 1 복사3풀이🦊 소수 판별법 :  - √ n까지의 수로 나누어 떨어지는지 검사  - 단, 1은 제외 ! !🦊 Math.sqrt()- 자바에서 제곱근을 구하는 함수- Math : 수학 관련 기능들을 담은 클래스- sqrt() : square root, 제곱근을 의미 1. 정수 배열을 선언2. 첫 번째 for문 돌면서 입력받은 정수 배열에 저장3. i..
[백준2475/Python] 검증수 https://www.acmicpc.net/problem/2475문제컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다.예를 들어 고유번호의 처음 5자리의 숫자들이 04256이면, 각 숫자를 제곱한 수들의 합 0+16+4+25+36 = 81 을 10으로 나눈 나머지인 1이 검증수이다.입력첫째 줄에 고유번호의 처음 5자리의 숫자들이 빈칸을 사이에 두고 하나씩 주어진다.출력첫째 줄에 검증수를 출력한다.예제 입력 1 복사0 4 2 5 6예제 출력 1 복..
썸네일 [백준11654/Python] 아스키 코드 https://www.acmicpc.net/problem/11654문제알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.입력알파벳 소문자, 대문자, 숫자 0-9 중 하나가 첫째 줄에 주어진다.출력입력으로 주어진 글자의 아스키 코드 값을 출력한다.예제 입력 1 복사A예제 출력 1 복사65예제 입력 2 복사C예제 출력 2 복사67예제 입력 3 복사0예제 출력 3 복사48예제 입력 4 복사9예제 출력 4 복사57예제 입력 5 복사a예제 출력 5 복사97예제 입력 6 복사z예제 출력 6 복사122풀이chr() : 숫자입력 -> 아스키 코드 값 출력ord() : 대,소문자 입력 -> 아스키 코드 값 출력코드n = input()if n in r..