[골드 5] 백준 - 노드사이의 거리 (파이썬)
[골드 5] 백준 - 노드사이의 거리 (파이썬)
2025.04.03https://www.acmicpc.net/problem/1240풀이트리의 노드 N, 거리 구할 쌍의 개수 M을 초기에 입력받는디ㅏ.N - 1개의 간선정보와 M개의 노드 쌍이 주어진다.트리는 사이클이 없고, 두 노드사이의 경로가 항상 유일하게 존재한다.따라서 s번 노드에서 DFS를 돌리면 모든 노드까지의 거리를 구할 수 있다.t번 노드까지의 누적 거리를 출력하면 s - t 거리이다.for _ in range(N - 1): u, v, w = map(int, input().split()) u -= 1 v -= 1 adj[u].append((v, w)) adj[v].append((u, w))트리의 간선을 입력 받고, 편의를 위해서 1씩 빼준다.또한 양방향으로 연결하기 u, v를 각각..
[실버 4] 백준 1269 - 대칭 차집합 (파이썬)
[실버 4] 백준 1269 - 대칭 차집합 (파이썬)
2025.04.02https://www.acmicpc.net/problem/1269풀이A를 집합(set)으로 변환집합을 사용하면 in 연산이 평균 시간 복잡도 O(1)로 빠르게 작동B를 순회하며 A에 포함된 원소 개수를 센다.대칭 차집합 개수 계산print(N + M - 2 * count)시간 복잡도 분석집합 변환 (set) : O(N)B 순회 및 포함 여부 확인 : O(M)최종 연산 : O(1)최종 시간 복잡도 : O(N + M)코드# 백준 1269 - 대칭 차집합# 분류 : 집합N, M = map(int, input().split())A = list(map(int, input().split()))B = list(map(int, input().split()))A = set(A)count = 0for b in B : ..
프로그래머스 - [Level 2] 전력망을 둘로 나누기 (파이썬)
프로그래머스 - [Level 2] 전력망을 둘로 나누기 (파이썬)
2025.04.02https://school.programmers.co.kr/learn/courses/30/lessons/86971?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이BFS + 완전탐색 방식의 풀이로 작성하였다. 각 연결을 하나씩 끊어보면서 두 전력망의 노드 수 차이의 최소값을 구하는 방식이다.문제에서 요구하는 사항은하나의 연결을 끊어 전력망을 두개로 나누었을때,두 전력망 송전탑 개수 찾이의 최소값을 반환하는 문제이다.BFS 코드는 너무 단순하기 때문에 간단하게 설명하면, 하나의 연결 그래프에서 시작 노드 S로부터 BFS를 수행하여 연결된 노드의 개수를 세는 함수로 칭한다.전..
프로그래머스 - [Level 2] 숫자 카드 나누기 (파이썬)
프로그래머스 - [Level 2] 숫자 카드 나누기 (파이썬)
2025.04.02https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이두 배열이 주어졌을 떄, 한 배열의 모든 수를 나누면서 다른 배열의 어떤 수로도 나누어지지 않는 수중에서 최대값을 찾는 문제이다.내가 접근한 방식은 다음과 같다.두배열 arrayA, arrayB가 주어지고,x는 arrayA의 모든 원소를 나눌수 있어야한다.x는 arrayB의 어떤 원소도 나눌 수 없어야한다.또는 반대로 x는 arrayB의 모든 원소를 나눌 수 있어야한다.x는 arrayA의 어떤 원소도 나눌 수 없어야한다.from math i..
백준 2495 - 연속구간 (파이썬)
백준 2495 - 연속구간 (파이썬)
2025.04.02https://www.acmicpc.net/problem/2495풀이이 문제는 0과 1로 이루어진 문자열이 세 줄 주어졌을 때, 각 줄에서 같은 숫자가 연속으로 등장하는 가장 긴 길이를 구하는 문제이다.예를 들어, “0001000”이라는 문자열에서는 0이 최대 3번 연속으로 등장하므로 정답은 3이 된다.문자열을 앞에서부터 한 글자씩 확인하면서, 이전 문자와 같은지 비교한다.만약 현재 문자가 이전 문자와 같다면, 현재 연속 길이(count)를 1 증가시킨다.반대로 다르다면, 연속이 끊긴 것이므로 count를 1로 초기화한다.매 반복마다 지금까지의 최대 연속 길이(max_count)를 갱신다.문자열을 모두 확인한 후, 해당 줄의 최대 연속 길이를 출력한다.시간 복잡도 분석각 줄에 대해 한번 씩 문자열을 순회..
백준 2456 - 나는 학급회장이다 (파이썬)
백준 2456 - 나는 학급회장이다 (파이썬)
2025.04.01https://www.acmicpc.net/problem/2456풀이투표는 여러 명의 학생들이 진행하며, 각 사람은 1번, 2번, 3번 후보에게 1~3점 중 하나씩 점수를 준다.가장 총점이 높은 사람이 회장이 됨.동점일 경우에는 다음 우선순위로 결정.3점을 더 많이 받은 후보2점을 더 많이 받은 후보그래도 같으면 무효처리 (0)코드# 백준 2456 - 나는 학급회장이다# 분류 : 구현N = int(input())score = [0] * 3count_3 = [0] * 3count_2 = [0] * 3for _ in range(N) : s = list(map(int, input().split())) for i in range(3) : score[i] += s[i] if s..
에어팟 프로 1세대 유닛 충전 접촉불량 자가 수리 후기 (빡쎔)
에어팟 프로 1세대 유닛 충전 접촉불량 자가 수리 후기 (빡쎔)
2025.04.01무려 에어팟 프로를 산지 4년을 훌쩍 넘고 쓴지 벌써 5년 가까이 되고 있다..5년가까이 써서 그런지 유닛과 본체 사이의 충전 접점이 밀려서 들어가버렸다는점,,,접점이 안으로 들어가서 오른쪽 유닛만 충전이 잘 되지 않았다는 점,,나랑 비슷한 사람이 있었다,, 더군다나 충전 접점 불량 수리에 대한 포스팅은 별로 없었다..https://m.blog.naver.com/icaner/223137477475 에어팟 프로 충전 접촉불량 자가 수리 후기(그나마 이쁘게 뚜따하는 법)1. 이번 블로깅 내용은 에어팟프로 이어폰 충전불량 현상을 자가수리 한 내용 2. 나는 일기를 기록하듯이 ...blog.naver.com방법을 알려준 공돌아재님께 감사의 말씀을 올립니다..필자는 충전이 한 2년전부터 잘 안되서 핀셋으로 들어 ..
백준 2491 - 수열 (파이썬)
백준 2491 - 수열 (파이썬)
2025.03.31https://www.acmicpc.net/problem/2491풀이어떤 수열이 주어졌을 때, 연속적으로 커지거나 같거나, 혹은 작아지거나 같은 부분 수열 중 가장 긴 길이를 구하는 문제이다.비내림차순 수열의 최대 길이 계산비오름차순 수열의 최대 길이 계산위 두 결과 중 최대값을 출력A[: : -1] 로 뒤집어서 감소하거나 같은 부분 수열을 구할 수 있도록 바꾼다.시간복잡도 분석비내림차순 수열의 계산 → O(N)비오름차순 수열의 계산 → O(N)즉, O(N)코드# 백준 2491 - 수열# 분류 : 구현N = int(input())A = list(map(int, input().split()))max_count = 1count = 1for i in range(1, N) : if A[i- 1]
디지털포렌식 전문가 2급 실기 대비 - [MBR] FAT32 MBR 복구 기초
디지털포렌식 전문가 2급 실기 대비 - [MBR] FAT32 MBR 복구 기초
2025.03.31https://pental.notion.site/2-1a095991283980ae844cf0896916ac12?pvs=74 디지털포렌식 전문가 2급 실기 대비 | Notion본 자료는 2022년에 디지털 포렌식 전문가 2급 자격을 취득한 후, 향후 수험생분들에게 도움이 되고자 직접 제작한 것입니다.pental.notion.site 노션에서도 열심히 작업중입니다.해당 게시물은 디지털 포렌식 전문가 2급 자격증 취득을 도전하시는 분들의 공부에 도움이 되도록 작성한 게시물입니다.많은 관심 부탁드리겠습니다.다운로드 링크FAT32_MBR_RECOVERY.zip먼저 주어진 ZIP 파일에서는 FAT32_MBR_RECOVERY.001 이라는 파일이 존재한다.해당 파일의 정보는 다음과 같다.FILE NAME FAT32_..
백준 2506 - 점수계산 (파이썬)
백준 2506 - 점수계산 (파이썬)
2025.03.30https://www.acmicpc.net/problem/2506풀이쉬운 문제이다, 각 문제가 연속해서 옳은 정답인 경우 증가하고, 틀린 문제가 있다면 0점으로 초기화 하여, 누적합이 되지 않도록 하는 문제이다.단순히 for문으로 O(N) 시간 복잡도로 문제를 해결할 수 있다.코드# 백준 2506 - 점수계산# 분류 : 구현N = int(input())scores = list(map(int, input().split()))answer = 0score = 0for i in scores : if i == 1 : score += 1 answer += score else : score = 0 print(answer)
백준 2485 - 가로수 (파이썬)
백준 2485 - 가로수 (파이썬)
2025.03.30https://www.acmicpc.net/problem/2485풀이가로수들이 일정하지 않은 간격으로 심어져 있다. 이 간격을 모두 같게 만들기 위해 새로운 나무들을 더 심어야한다.현재 심어진 가로수의 좌표가 주어진다.추가로 심어야 하는 나무의 수를 구하는 문제이다.풀이과정은 다음과 같다.각 인접한 나무 사이의 간격을 구한다.3 - 1 = 2, 7 - 3 = 4, 13 - 7 = 6이 간격들의 최대공약수를 구한다.간격을 모두 gcd로 만들면 최소한의 나무로 균등 간격이 된다.전체 거리에서 gcd 간격으로 나무를 심었을 때의 전체 나무를 개산한다.기존에 있던 나무 수를 빼면, 추가로 심어야 할 나무 수가 나온다.코드# 백준 2485 - 가로수# 분류 : 수학N = int(input())X = [0] * N..
프로그래머스 - 배달 (파이썬)
프로그래머스 - 배달 (파이썬)
2025.03.30https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이N개의 마을(1번부터 N번), roads는 [마을 A, 마을 B, 걸리는 시간] 형태의 리스트고, 음식 배달은 1번 마을에서 시작한다.K시간 이하로 배달 가능한 마을 수를 구해야한다.1번 마을을 시작점으로 해서 모든 마을까지의 최단 거리를 구한다. 여기서는 다익스트라 알고리즘을 사용한다.구한 거리 중에서 K이하인 마을 개수를 세면 정답이다.시간 복잡도 분석도로수 E, 마을 수 N즉, O((N + E) Log N)코드import heapqfr..
프로그래머스 - 마법의 엘리베이터 (파이썬)
프로그래머스 - 마법의 엘리베이터 (파이썬)
2025.03.29분류 : 그리디링크 : https://school.programmers.co.kr/learn/courses/30/lessons/148653풀이엘리베이터가 버튼을 눌러 층을 이동하는데,위층으로 1칸, 아래층으로 1칸 이동이 가능하고, +10, +100 등도 가능하다.목표층에서 0층으로 이동하는 최소 버튼 횟수를 구하는 문제이다.즉, 각 자릿수를 기준으로 반올림 또는 내림하여 효율적인 방법으로 움직이는 그리디 알고리즘 문제이다.while storey > 0 : digit = storey % 10 next_digit = (storey // 10) % 10현재 숫자를 1의 자리부터 확인하면서, 다음 자릿수가 4 이상인지 여부에 따라 반올림 할지 내릴지 결정한다.if digit > 5 or (digit..
백준 2527 - 직사각형 (파이썬)
백준 2527 - 직사각형 (파이썬)
2025.03.28https://www.acmicpc.net/problem/2527풀이두 직사각형이 주어졌을 때, 겹치는 영역이 어떤 형태인지 판단하는 문제이다.다양한 겹침의 경우를 다음 네가지 중 하나로 분류해야한다.a → 직사각형이 겹치는 경우 (면적으로 겹침)b → 직사각형이 선분으로 겹침c → 꼭짓점만 겹침d → 전혀 겹치지 않음x축 겹침 여부 판단 및 y축 겹침 여부 판단을 진행하면 된다.위에서 구한 x_intersection, y_intersection 값을 조합해서 미리 정의된 결과 테이블에서 문자를 출력하면 답을 쉽게 구할 수 있다.코드# 백준 2527 - 직사각형# 분류 : 기하학answer = [ ['d', 'd', 'd'], ['d', 'c', 'b'], ['d', 'b', 'a']]f..
백준 2460 - 지능형 기차 2 (파이썬)
백준 2460 - 지능형 기차 2 (파이썬)
2025.03.28
백준 2526 - 싸이클 (파이썬)
백준 2526 - 싸이클 (파이썬)
2025.03.28https://www.acmicpc.net/problem/2526풀이수열 A는 다음과 같이 정의할 수 있다.A_0 = NA_i = A_{i-1} * N mod P수열을 계속 계산하다 보면, 언젠가 같은 값이 다시 등장해서 반복(싸이클)이 발생한다. 이때 반복되는 구간의 길이를 구하는 문제이다.order 딕셔너리는 각 숫자가 몇 번째에 처음 등장했는지를 저장한다.n = n * N % P는 문제에서 정의된 수열의 다음 항을 계산한다.만약 n이 이미 order에 있다면싸이클이 시작된 시점은 order[n]현재 시점은 count즉, 싸이클 길이는 count - order[n]코드# 백준 2526 - 싸이클# 분류 : 구현N, P = map(int, input().split())n = Norder = {}coun..
백준 2530 - 인공지능 시계 (파이썬)
백준 2530 - 인공지능 시계 (파이썬)
2025.03.28https://www.acmicpc.net/problem/2530풀이조금 고민을 한 문제이다.그냥 단순히 수학 공식을 이용해서 풀려다가 어짜피 초를 입력 받기 때문에 초 단위로 증가시켜도 된다는 판단이 들은 문제이다.시긴도 1초에다가, 최대 500,000초가 주어지기 때문에 시간도 넉넉하다고 생각했다.단순히 6025를 입력받으면 6025번 반복을 진행한다.만약 C가 60이 되면 B를 1 증가 시키고 C를 0으로 바꾸는 식으로 진행해서 췹게 풀수 있는 문제였다.코드# 백준 2530 - 인공지능 시계# 분류 : 수학A, B, C = map(int, input().split())D = int(input())for i in range(D) : C += 1 if C == 60 : B += ..
디지털포렌식 전문가 2급 실기 대비 - [MBR] NTFS MBR 복구 기초
디지털포렌식 전문가 2급 실기 대비 - [MBR] NTFS MBR 복구 기초
2025.03.26https://pental.notion.site/2-1a095991283980ae844cf0896916ac12?pvs=74 디지털포렌식 전문가 2급 실기 대비 | Notion본 자료는 2022년에 디지털 포렌식 전문가 2급 자격을 취득한 후, 향후 수험생분들에게 도움이 되고자 직접 제작한 것입니다.pental.notion.site노션에서도 열심히 작업중입니다.해당 게시물은 디지털 포렌식 전문가 2급 자격증 취득을 도전하시는 분들의 공부에 도움이 되도록 작성한 게시물입니다.많은 관심 부탁드리겠습니다.다운로드 링크NTFS_MBR_RECOVERY.zip먼저 주어진 ZIP 파일에서는 NTFS_MBR_RECOVERY.001 이라는 파일이 존재한다.해당 파일의 정보는 다음과 같다.FILE NAME NTFS_MBR_..
디지털포렌식 전문가 2급 실기 대비 - 자격증 소개
디지털포렌식 전문가 2급 실기 대비 - 자격증 소개
2025.03.26https://pental.notion.site/2-1a095991283980ae844cf0896916ac12?pvs=74 디지털포렌식 전문가 2급 실기 대비 | Notion본 자료는 2022년에 디지털 포렌식 전문가 2급 자격을 취득한 후, 향후 수험생분들에게 도움이 되고자 직접 제작한 것입니다.pental.notion.site노션에서도 작업중입니다. 많은 관심 부탁드리겠습니다.디지털포렌식 전문가 2급 자격증은?자격증 개요자격증 명칭: 디지털 포렌식 전문가 2급주관 기관: 한국포렌식학회(Korean Society of Forensic Science)목적: 디지털 증거의 수집, 분석, 보존 및 법적 절차에 대한 전문성을 검증하기 위한 자격증대상: 법률, 수사기관, IT 보안, 기업 감사, 법무 분야 종사..
프로그래머스 - 택배 상자 꺼내기 (파이썬)
프로그래머스 - 택배 상자 꺼내기 (파이썬)
2025.03.26https://school.programmers.co.kr/learn/courses/30/lessons/389478?language=python3 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이다른 사람 풀이를 보고 한숨을 쉬었던 문제이다..def solution(n, w, num): m1 = num%(w*2) m2 = ((w*2+1) - m1)%(w*2) # num 이상 n 이하의 수들 중 2*w로 나눈 나머지가 m1,m2인 것들의 수를 세면 된다. return len(range(num,n+1,w*2)) + len(range(num + (m2-m1)%(w*2), n+1, w*2..