본문 바로가기

전체 글

(131)
[백준 / Python] 연결 요소의 개수_11724 정답 풀이 dfs로 풀었다. n, m = map(int, input().split()) data = [[] for _ in range(n + 1)] for _ in range(m): a, b = map(int, input().split()) data[a].append(b) data[b].append(a) visited = [False for _ in range(n + 1)] def dfs(idx): for i in data[idx]: if not visited[i]: visited[i] = True dfs(i) result = 0 for i in range(1, n + 1): if not visited[i]: dfs(i) result += 1 print(result) 궁금한 풀이 from _collect..
[백준 / Python] 촌수계산_2644 내 풀이 n = int(input()) x, y = map(int, input().split()) m = int(input()) data = [[] for _ in range(n + 1)] # 양쪽에 연결하는 이유는?? 그럼 다른 문제들에서는 양쪽에 연결하면 안되나?? for _ in range(m): a, b = map(int, input().split()) data[a].append(b) data[b].append(a) visited = [False for _ in range(n + 1)] result = 0 def dfs(param_x, cnt): global result if param_x == y: result = cnt return for i in data[param_x]: if not vis..
[JAVA] Collection - LinkedList와 ArrayList의 차이 Java Collection이란? 자바에서 Collection이란 데이터의 집합, 그룹을 의미하며, JCF(Java Collection Framework)는 이러한 데이터, 자료구조인 컬렉션과 이를 구현하는 클래스를 정의하는 인터페이스를 제공한다. Collection 인터페이스는 List, Set, Queue로 크게 3가지 상위 인터페이스로 분류할 수 있다. 그리고 Map의 경우 Collection인터페이스를 상속받고 있지 않지만, Collection으로 분류된다. LinkedList란? 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식의 자료구조이다. Node는 LinkedList에 객체를 추가하거나, 삭제하면 앞뒤 링크만 변경되고 나머지 링크는 변경되지 않기 때문에 중간에 데이터를 추가..
면접 대비 보호되어 있는 글입니다.
[Spring] 빈 생명주기, 빈 스코프 Bean 생명주기란? 스프링 컨테이너는 Bean을 주입하는 것 이외에 생성과 소멸과 같은 생명 주기를 관리한다. 빈 생명주기 스프링 빈은 객체 생성 후, 의존관계 주입이 다 끝난 후에 필요한 데이터를 사용할 수 있는 준비가 완료된다. -> 여기서 사용할 수 있는 준비라는 것은 빈이 생성되는 것을 말하는 건가? 따라서 초기화 작업은 의존관계 주입이 모두 완료되고 난 다음에야 호출한다. 의존관계 주입이 완료되면, 스프링 빈에게 콜백 메소드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공한다. 또한 스프링 컨테이너가 종료되기 직전에 소멸 콜백을 준다. 스프링 빈의 이벤트 라이프사이클 스프링 컨테이너 생성-> 스프링 빈 생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸 전 콜백 -> 스프링 종..
[ 백준 / Python ] 피보나치의 수 DP를 사용하여 푼 풀이 def solved(num): dp = [0 for _ in range(46)] dp[0] = 0 dp[1] = 1 for i in range(2, num+1): dp[i] = dp[i-1] + dp[i-2] return dp[num] print(solved(int(input()))) 재귀로 풀기 위해 시도한 코드들 틀린 코드 - 시간 초과 def recursive(num): if num == 0: return 0 if num == 1: return 1 return recursive(num - 1) + recursive(num - 2) n = int(input()) print(recursive(n)) 시간 초과가 난 이유가 뭘까? 위 코드는 그림을 보면 알 수 있듯이, 같은 작업..
[알고리즘] 시간 복잡도 Big-O 시간 복잡도란? 입력데이터가 n개 있을 떄, 최악의 경우의 연산 횟수를 n의 함수로 나타낸 것. 왜 입력데이터가 n개일 때인가? 알고리즘 A, B가 있을 때 두 가지 상황을 가정하자. 1. 입력 데이터가 다른 상황 A는 3초가 소요되는 알고리즘이고, B는 7초가 소요되는 알고리즘이다. 하지만 그렇다고 A가 더 빠른 알고리즘이라고 할 수 없다. 두 알고리즘에 대한 입력 값이 서로 다를 수 있기 때문이다. 2. 입력 데이터가 같아도 상황에 따라 다를 수 있다. 예를 들어, 10개의 데이터에 한해서는 A가 B보다 빠를 수 있지만, 10000개의 데이터에 한해서는 B가 더 빠를 수 있다. 결론: 그렇기 때문에 입력 데이터가 n개 일때, 최악의 경우의 연산 횟수를 n의 함수로 나타낸 것이 시간 복잡도 Big-O로..
[ 삼성 기출 / Python ] 청소년 상어 처음 틀린 풀이 from copy import deepcopy dx = [(0, 0), (-1, 0), (-1, -1), (0, -1), (1, -1), (1, 0), (1, 1), (0, 1), (-1, 1)] shark = int(1e9) def solved(): fish_pos = [[0, 0] for _ in range(17)] data = [[[0, 0] for _ in range(4)] for _ in range(4)] for i in range(4): value = list(map(int, input().split())) cnt = 0 for j in range(0, 7, 2): fish_pos[value[j]][0], fish_pos[value[j]][1] = i, cnt data[i][c..