전체 글
비행기에서 적은 짧은 근황...
벌써 길고도 짧았던 3개월간의 두번째 인턴십을 거쳐 전환, 정식으로 입사한지도 3개월이나 되었다.(반년간 글이 없었던이유ㅎㅎ) 이 회사에 들어온지도 벌써 6개월이라니 믿기진 않지만,, 하여튼 좌충우돌 바빴던 신입 파일럿 프로젝트 종료 후 일주일간 회사에서 여행을 보내줘서 호주에서 동기들과 즐거운 시간을 갖고 왔다. (돈많은회사 최고^^7) 이제 수습도 떼고 다음주부터 본격적으로 부서배치를 받아 진짜 현업에 뛰어들게 되는데.. 이제 진짜 시작이니만큼 다시 열심히 달려봐야겠다! 🏃♂️🏃♂️다행히 그동안 관심있었던 기술과 도메인을 가진 부서로 배치돼서 기대반 설렘반으로 새로운 시작을 하게 되었다. 공부와 포스팅도 슬슬 다시 시작해야지,, 작년-올해까지 해서 새로운 환경에서 다시 시작부터 출발하는게 벌써 네..
본격 JVM 해부하기
🤓 새로운 정보를 찾으면 계속 업데이트 될 글입니다! 자바의 실행 과정 자바는 JVM이 OS로부터 이 프로그램이 필요로 하는 메모리를 할당받는다. 자바 파일이 자바 컴파일러에 의해 자바 바이트 코드(.class)로 변환된다. 클래스 로더를 통해 자바 바이트 코드를 JVM으로 로딩한다. 해석된 바이트 코드는 런타임 데이터 영역에 배치된다. 실행 엔진을 통해 실행된다. JVM은 필요에 따라 GC와 같은 작업을 수행한다. JVM의 구조 클래스 로더 자바는 동적 로드, 즉 런타임에 클래스를 로드하고 링크하는 특징이 있다. 이 동적 로드를 담당하는 부분이 JVM의 클래스로더이다. 로드 우선 클래스 로더는 .class 파일을 읽고, 그 내용에 따라 적절한 바이너리 데이터를 만들고, 메소드 영역에 저장하는 동작을 수..
클린 코드 2장 - 의미 있는 이름
의미 있는 이름 의도를 명확히 밝혀라 변수, 함수, 클래스 이름은 변수의 존재 이유, 수행 기능, 사용 방법 같은 내용을 모두 담고 있어야 한다. 코드가 하는 일을 짐작하기 어려워선 안되며, 코드의 맥락이 코드 자체에 명시적으로 드러나야 한다. 지뢰찾기 게임을 만든다고 가정했을 때, 해당 코드들을 비교해보자. 단순히 이름만 고쳤을 뿐인데 함수가 하는 일을 이해하기 쉬워졌다. public List getThem(){ List list1= new ArrayList(); for(int[] x: theList){ if(x[0]==4) list1.add(x); } return list1; } public List getFlaggedCells() { List flaggedCells = new ArrayList();..
Softeer) 플레이페어 암호_Python
#문제 https://softeer.ai/practice/info.do?idx=1&eid=804 Softeer 연습문제를 담을 Set을 선택해주세요. 취소 확인 softeer.ai #문제 분석 - 음.. 아주아주 조건이 많은 빡구현 문제이다. 코드 한줄이라도 틀리면 그냥 바로 틀리기 딱 쉬운 문제..? 딱히 알고리즘은 없고 주어진 조건만 잘 구현하면 될듯하다. 이런 문제는 중간중간 디버깅을 해가면서 맞았는지 확인해봐야 시간 낭비를 안할 것 같다. 현대도 구현을 좋아하나..? - 딕셔너리를 잘 활용했더니 마지막 변환 과정에서 좌표를 따로 손대지 않고 쉽게 풀 수 있었다. #코드 import sys from collections import deque input=sys.stdin.readline messag..
백준 1238) 파티_Python
# 문제 https://www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net #문제 분석 - 처음에는 플로이드-워셜로 충분히 풀 수 있는 문제라고 생각했다. 각 노드로 가는 최단 거리들을 구한 다음에, i->X로 가는 최단 거리+ X->i로 가는 최단 거리를 더해줘서 이의 최대값을 구하는 식으로 문제를 풀었다. import sys input=sys.stdin.readline N,M,X=map(int,input().split()) bo..
백준 1520) 내리막길_Python
문제 분석 https://www.acmicpc.net/problem/1520 1520번: 내리막 길 여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으 www.acmicpc.net 처음에는 단순하게 프로그래머스의 등굣길 문제 느낌으로 풀려고 했다. BFS+DP 방식이다. for r in range(0,M): for c in range(0,N): for i in range(4): nr,nc=r+dr[i],c+dc[i] if DP[r][c]!=0 and 0좌->상으로 생각한다. DFS가 Return되는 지점은 두 지점이 생긴다. 끝 지점에 도달하면 경로 1개가 추가된 것이..
백준 16118) 달빛 여우_Python
문제 분석 https://www.acmicpc.net/problem/16118 16118번: 달빛 여우 첫 줄에 나무 그루터기의 개수와 오솔길의 개수를 의미하는 정수 N, M(2 ≤ N ≤ 4,000, 1 ≤ M ≤ 100,000)이 주어진다. 두 번째 줄부터 M개의 줄에 걸쳐 각 줄에 세 개의 정수 a, b, d(1 ≤ a, b ≤ N, a ≠ b www.acmicpc.net 다익스트라를 구현할 줄 안다면 여우의 이동 경로는 어렵지 않게 구할 수 있다. 그러나 늑대의 이동경로를 구하는 데서 약간 아이디어가 필요하다. 늑대는 각각의 그루터기에 늦게 도착하거나 빠르게 도착할 수 있다. 이 때 단순 다익스트라 처럼 구현한다면 이전 최단 경로에 비해서 이번에 비교하는 최단 경로가 더 짧다면 갱신을 해줄텐데, ..
YAPP 21기 백엔드 직군 합격 🤓
인턴 생활을 마무리하고 지금 시점에서 나에게 필요한게 뭘까?를 진지하게 생각해봤더니 혼자 공부하는 것도 좋지만 이제는 무조건 직접 코드를 짜면서 다른 분들과 협업하고 같이 프로젝트를 진행해봐야 하는 게 최우선이라는 결론이 나왔다. 나는 항상 실전을 직접 겪을 때 열정이 확 불타오르면서 가장 많이 공부하게 되고 빠르게 성장하는 타입이기도 하고, 또 취준을 하면서도 감을 잃지 않게 무조건 하나의 프로젝트는 잡고 있어야 한다는 생각이 들었다. 취준을 하게 되면 서류,코테,면접에만 정신이 팔리게 되고 따로 시간을 내지 않는 이상 혼자서 코드 짜보고 공부하는 건 등한시하기 쉽기 때문에... 그리고 프로젝트를 하면서 반드시 가져가야할 조건이 하나 있었는데, 그건 바로 무조건 같은 직군과 협업을 하는 것이었다. 평소..