전체 글 293

12. [알고리즘] K번째 약수

내 생각 1. 약수의 리스트를 구함 2. 정렬 3. k-1 번째 수를 리턴해준다. 구현 # K번째 약수 def solution(a,b): def sol1(n): li = list() for i in range(1,n): if n % i == 0: li.append(i) return li def sol2(li,b): if len(li) < b: return -1 li.sort() return li[b-1] li = sol1(a) answer = sol2(li,b) return answer print(solution(6,3)) print(solution(25,5)) print(solution(100,5)) print(solution(100,7)) print(solution(1000,12)) 다른사람 생각 c..

Dev/Algorithm 2021.04.29

13. 기술면접 전 보고가면 좋은 내용 공유 2

1. 자바를 쓰는 이유가 뭘까요 자바를 구성하는 5가지 장점으로 인해 자바를 사용한다고 생각합니다. 자바는 객체지향형이고, 쉽고, 단순합니다. 다형성 및 캡슐화 등 객체지향적으로 구성되어있습니다. 자바는 분산환경에서 사용되도록 디자인되어 보안상 안전하게 설계되어있습니다. 자바는 javac를 이용해 OS에 영향받지 않는 중립적인 코드를 생성하기 때문에 아키텍쳐 관계없이 사용가능하므로, 호환성 문제가 발생하지 않습니다. JIT나 GC 등 자바 최적화를 위한 기법들이 존재합니다. 멀티스레드 환경을 지원하여 동시에 여러 작업이 진행가능하도록 지원해줍니다. 2. JIT가 뭘까요? 어떤 메서드의 일부, 혹은 전체 코드를 네이티브 코드로 변환하여 JVM에서 번역하지 않도록 함으로서 보다 빠른 성능을 제공하는 기술입니..

Dev 2021.04.19

12. [면접질문 정리] 인터넷 네트워크

인터넷 통신 물리적 거리가 가깝다면, 단순히 물리 선을 이용해서 통신할 수 있다. 하지만, 지구 반대편에 있는 eric 에게 메세지를 보내고자 한다면..? 물리적인 선으로 연결하기엔 한계가 있다. 복잡한 인터넷 망의 노드들을 지나가야한다. IP 이를 해결하기 위해 인터넷 주소인 IP를 이용한다. 패킷이라는 통신 단위로 데이터 전송이 가능하다. IP 패킷정보는 출발지 IP 및 PORT, 도착지 IP 및 PORT, 전송 순서 등을 감싸 전송 가능하다. 하지만 패킷을 받을 주체가 연결되어있지 않거나, 서비스 불능인 상황여부에 관계 없이 패킷을 전달하는 문제가 있다. 중간에 패킷이 사라지거나, 받는 입장에서 순서대로 패킷을 받지 못할수도 있다. TCP 이를 해결하기 위해 TCP(전송 제어 프로토콜)을 이용한다...

Dev 2021.04.19

11. 기술면접 전 보고가면 좋은 내용 공유

1. 스레드 와 프로세스의 차이는? 프로세스는 메모리에 올라와 실행 중인 프로그램 인스턴스이고 스레드는 프로세스내에서 실행되는 여러 흐름의 단위 입니다. 멀티 프로세싱 - 하나의 응용프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 하나의 작업을 처리하도록 하는 것 장점: 여러 개의 자식 프로세스 중 하나에 문제가 발생하면 그 자식 프로세스만 죽는 것 이상으로 다른 영향이 확산 되지 않는다. 단점: Context Switching에서의 오버헤드 Context Switching 과정에서 캐쉬 메모리 초기화 등 무거운 작업이 진행되고 많은 시간이 소모되는 등의 오버헤드가 발생. 프로세스 사이의 어렵고 복잡한 통신기법(IPC) 프로세스는 각각 독립된 메모리 영역을 할당받았기 때문에 하나의 프로그램에 속하..

Dev 2021.04.06

10. [자바] 자바 개발자 면접 질문 정리

Q. JVM, JRE, JDK의 차이점에 대해 설명해주세요. A. JVM은 자바 가상머신, 구현체 및 표준으로, class 파일을 OS에 특화된 코드로 바꾸어주는 표준입니다. JRE는 11버전 이전과 이후로 나눌 수 있는데, JVM + Library 로 구성되어 실행에 필요한 배포판을 만들어 줍니다. 하지만 개발 툴은 지원하고 있지 않습니다. JDK는 JRE + 실행 툴로 구성되어있고, JAVA를 class 로 바꾸어주는 javac를 가지고 있습니다. Q. 자바는 무엇인가요? A. 언어 그 자체입니다. JDK 내부의 javac 컴파일러를 이용하여 class 파일 로 변환 가능합니다. Q. 자바 유료화 이슈가 한때 자주 등장하곤 했습니다. 이에 대한 자신의 생각을 말해주세요. A. 많은 사람들이 자바가 유..

Dev 2021.04.02

[백준] 그래프의 탐색 (DFS, BFS)

그래프의 탐색에는 깊이우선 탐색과, 너비우선 탐색 방법 두가지 방법이 존재한다. 각각을 구할 때, 인접행렬로 구하는 방식이 있고, 간선 리스트로 구하는 방식이 존재한다. 인접행렬은 이차원배열이기 때문에 O(N^2)의 시간이 걸리고, 간선리스트는 간선의 합만큼만 시간복잡도가 걸리기 때문에 O(V+E) 의 시간복잡도가 존재한다. 시간을 최소화 하고싶다면 간선리스트로 구현하자! 1260번. DFS와 BFS https://www.acmicpc.net/problem/1260 더보기 def dfs(n,v): global arr,check check[v] = True print(v,end=' ') for i in range(1,n+1): if arr[v][i] == 1 and check[i] == False: dfs..

Dev/Algorithm 2021.03.27

[백준] 재귀함수 사용하기

가능한 경우, 불가능한 경우, 이외의 경우 셋으로 나눠서 설계하자 1,2,3 더하기 해당 문제는 재귀를 모를 당시에는 정말 어려웠는데,, 이제는 왜 그렇게 푸는지도 이해가 되고, 어떻게 풀어야할지도 이해가 어느정도는 된다. 신기하다. 하면 할수록 느는 것인디 왜 그렇게 하기싫어했을까. https://www.acmicpc.net/problem/9095 더보기 def solution(sum, goal): ans = 0 if sum > goal:# 1. 불가능한 경우 return 0 if sum == goal:# 2. 정답인 경우 return 1 # 3. 이외의 경우 ans += solution(sum+1,goal) ans += solution(sum+2,goal) ans += solution(sum+3,go..

Dev/Algorithm 2021.03.15