분류 전체보기
-
[백준] 이분 그래프(골드4)💻Programming/Algorithm 2025. 9. 10. 18:30
문제 링크 https://www.acmicpc.net/problem/7569 이분 그래프(Bipartite Graph)의 정의- 정점을 두 그룹으로 나눌 수 있는 그래프- 이분 그래프가 될 수 있는 조건: 같은 그룹 안에는 간선이 없어야함- 즉 모든 간선은 다르 그룹을 연결 예시그룹 1: {A, B} 그룹 2: {C, D} 간선: A-C, A-D, B-C, B-D → 가능 ✅간선: A-B → A와 B가 같은 그룹 → ❌bfs 이용 문제- is_bipartite 함수에서 전체 for 문을 도는 이유: 그래프가 연결 그래프가 아닐 수도 있기 때문에 - bfs 구현 코드- 인접 노드들을 모두 돌면서 아직 방문하지 않은 노드인 경우 현재 노드의 반대 색깔을 적용- 만약 방문한 노드인데 현재 노드와 색이 같은 경..
-
[백준] 토마토(골드5)💻Programming/Algorithm 2025. 9. 9. 21:17
문제 링크 https://www.acmicpc.net/problem/7569 bfs(그중에서도 멀티소스 bfs) 이용 문제1. 시작이 맨 첫번째 인덱스에서가 아님-> 3중 for문을 돌며 익은 토마토를 모두 큐에 삽입 2. 큐를 돌며 익은 토마토의 아래 위 왼쪽 오른쪽 앞 뒤를 현재 익은 토마토 값 + 1 을 해서 넣어줌 -> 최소 일수를 구하는 핵심 포인트이 값이 최소 일수를 의미 3. 큐 요소들이 모두 소진되면 3중 for문을 통해 그래프를 돌며 모든 토마토가 익었는지 답이 무엇인지 확인함- 여기서 max를 통해 일수를 찾는데 왜 최소 일수를 찾으면서 최대 일수를 구하나 라는 의문이 생길 수 있음가장 늦게 익은 토마토가 익은 날짜를 알아야함 구현 코드from collections import dequ..
-
[백준] 벽 부수고 이동하기(골드3)💻Programming/Algorithm 2025. 9. 8. 18:31
문제 링크https://www.acmicpc.net/problem/2206 BFS 이용 문제1. q에 넣는 정보: y, x, , 지금까지 온 거리 2. 현재 인덱스에서 dy, dx 변수를 이용하여 상하좌우를 이동하며,다음에 q에 넣어줄 인덱스(y, x)가 배열의 인덱스 범위를 벗어나지 않는지 확인 3. 벽이 아니고 아직 방문하지 않은 경우 / 벽이고 아직 벽을 부순적이 없는 경우로 나누어 q에 삽입 -> 벽인데 이미 벽을 한 번 부순적이 있는 경우는 자동으로 중단됨 4. 답을 return y, x가 n-1, m-1에 도달했을 경우 dist 변수 returnwhile문이 종료되었는데 dist가 return 되지 않은 경우-> 0, 0에서 n-1, m-1로 가는 경로가 존재하지 않으니 -1 return ..
-
[백준] 트리의 지름(골드4)💻Programming/Algorithm 2025. 9. 2. 16:25
문제 링크https://www.acmicpc.net/problem/1967 트리의 지름 알고리즘 구현1. 아무 노드에서 시작해서 가장 먼 노드를 찾는다. (DFS 이용) 여기서는 1- 예를 들어서 1번 노드에서 DFS/BFS 를 돌려서 가장 먼 노드를 찾고, 그게9라고 하자- 이때 9번 노드는 트리의 한쪽 끝(leaf)임 2. 가장 먼 노드 9에서 다시한번 DFS9에서 가장 먼 노드를 찾으면 그게 다른 쪽 끝 노드임 -> 지름 의미 트리의 특징을 이용 -> 어떤 노드에서 가장 멀리 있는 노드는 항상 지름의 양 끝 중 하나가 된다. 코드import syssys.setrecursionlimit(10**6)input = sys.stdin.readlinen = int(input())graph = [[] for ..
-
[프로그래머스] N으로 표현(level3)💻Programming/Algorithm 2025. 8. 29. 16:57
문제 링크https://school.programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 동적계획법(Dynamic Programming) 이용 문제 1. 점화식 의미 정의dp[i]: N을 정확히 i번 사용하여 만들 수 있는 모든 수들의 집합 2. dp 초기화N을 한 번 사용하면 표현할 수 있는 수는 N뿐 dp[1] = {N} 3. 반복구성 i = 2 ~ 8dp[i]에 숫자를 이어붙인 값 int(str(N) * i)을 추가1~i까지 j 변수를 통해 돌면서 dp[j]와 dp[i-j]를 이용해 + , -, *, // 사칙연산 i 반복문..
-
[Data Science] 데이터 사이언스에 사용되는 파이썬 패키지 정리(numpy, matplotlib, pandas)💻Programming/Data Science 2024. 9. 28. 04:40
Numpy수치적인 연산에 최적화된 파이썬 도구이다. 개발자는 파이썬 문법을 이용해 사용하지만 내부적으로는 C언어로 엄청난 최적화가 되어있어 더 효율적인 메모리 관리와더 효율적인 연산이 가능하도록 알고리즘 설계가 되어있다. 또한 컴퓨터 하드웨어를 효율적으로 활용한다는 장점이 있다. 예를 들어, 한국의 년도별 gdp가 달러로 표현된 배열을 원화로 환산하고싶다면, Python만 이용for i in range(len(gdp_korea_array)): gdp_korea_array[i] = gdp_korea_array[i] * 1335gdp_korea_array 파이썬에서는 배열 안의 모든 요소에 곱하기를 하고 싶을 때 이렇게 for문을 사용해서 하나하나 넣어주어야 하지만,numpy 이용gdp_korea_ar..
-
[Exchange Student] 미국 비자(J-1) 신청 후에 DS-160 변경🇺🇸Exchange Student 2024. 7. 5. 16:51
DS-160을 작성해본 사람이라면 알겠지만 굉장히 쓸게 많다. 정말 꼼꼼히 확인하고 틀린 것 하나 없이 내려면 3시간까지도 걸릴 수 있다. 일단 나는 DS-160을 모두 작성 후 확인서까지 발급받고, 그걸 이용해 비자 신청 후 비자 인터뷰 날짜까지 잡은 상황에,,,,그 전날 오후 9시에 DS-160에 잘못된 정보를 입력한걸 알게되었다. 다른 사람들의 여러 후기를 찾아본 결과, DS-160은 확인서까지 발급된 이후에는 정보 수정이 불가하다. 또한, 이미 신청된 비자 인터뷰에서 DS-160 번호를 변경 불가능하다. 이러한 상황에서 어떻게 해야할까? 새로운 DS-160을 발급 후, 비자 인터뷰 당일 면접 전에 말씀드리면 된다. 여기까지만 보면 이게 왜 글까지 쓸일인가 싶지만,,,, DS-160 사이트는 정..