전체 글 (64) 썸네일형 리스트형 [코딩테스트 합격자 되기] 그래프 [인프런] 코딩 테스트 합격자 되기 C++강의 링크 : https://www.youtube.com/watch?v=OmYQsxreXNo&embeds_referring_euri=https%3A%2F%2Fwww.inflearn.com%2F&source_ve_path=MjM4NTE [그래프의 구현 방법]인접 행렬 [c++ 코드]행과 열의 인덱스로 노드의 값을 나타내고, 배열의 값은 간선의 가중치가 됨노드 대비 간선이 적을 경우 메모리 공간 효율이 좋지 않음인접 리스트 [c++ 코드]특정 시작 노드를 기준으로 연결된 노드들을 리스트로 연결하는 방식실제 그래프의 노드 갯수만큼만 추가하므로 메모리 낭비 없음특정 노드에 모든노드가 연결된 경우, 탐색시 O(N)이 될 수 있음 (드문 케이스) [DFS와 BFS]c++ 코.. (공부중) 객체지향 디자인패턴 OOP (객체지향 프로그래밍)특성캡슐화상속추상화다형성설계원칙 (SOLID)Single Responsibility Principle (SRP) : 클래스는 하나의 역할만 해야한다Open Close Principle (OCP)The Liskov Substitution Principle (LSP)Interface Segration Principle (ISP)Dependency Inversion Principle (DIP)디자인 패턴각 패턴이 무엇이며, 어떤 경우에 사용하는지 예시 정도 알아두기생성 패턴1) Singleton객체가 하나만 만들어져야 하는 경우 사용e.g) 전체 페이지에 똑같이 적용되는 다크모드클래스 안의 static이 아닌 변수나 메소드들은 객체가 생성될 때마다 메모리 공간을 새로 차지하지만st.. 개발자로서의 삶, 디지털 노마드? 최근 스레드를 하면서 디지털 노마드 개발자들을 많이 보게 되었다. 여러 나라를 떠돌면서 개발일을 외주 맡아 하는 개발자들,집중이 잘 되는 개인 장소에서 자기만의 일을 하는 개발자들을 보면서막연한 동경이 느껴졌다. 내가 원하는 삶이 디지털 노마드일까?저렇게 되기 위해서 지금 나는 무엇에 집중해야 할까? 외주를 믿고 맡길 수 있는 개발자가 되려면 그만큼의 실력을 가지고 있어야 한다.실력을 증명하는 것은 경력이라고 생각하기에현재는 좋은 회사에서 탄탄한 경력을 쌓는 것이 목표다.워케이션(장기 원격 근무)이 가능한 회사면 더욱 좋겠다. 회사일 외에도 다양한 서비스를 개발하면서 개발 실력을 꾸준히 늘리고,가능하다면 수익화까지 해보는 것 이게 2024.08 현재 내가 목표하는 삶을 위한 방향이다.취준하는 지금 이 시.. [코딩 테스트 합격자 되기] 집합 [인프런] 코딩 테스트 합격자 되기 C++강의 링크 : https://www.youtube.com/watch?v=pQ4fcGEG-PY [목차]상호배타적 집합이란?집합의 연산union 연산과 find 연산경로압축 / 랭크기반 알고리즘으로 개선하기집합의 구현상호배타적 집합 : 교집합이 없는 집합관계 [집합의 표현] [집합의 연산]find : 특정 노드의 루트 노드를 확인하는 연산- 특정 노드부터 루트노드가 나올 떄까지 거슬러 올라가기- union 연산에서도 활용됨- 경로 압축 : find 연산을 할 때 루트노드를 찾는 과정에서 거쳐간 노드들의 경로 압축 - 경로 압축 후 find 연산의 시간 복잡도 : O(N) -> O(1) union : 두 개의 집합을 하나의 집합으로 합치는 연산- find 연산을 통.. 백준 1일 1코테 D+100 요즘 사이드 프로젝트 개발하는게 재밌어서 하루종일 하다보니코테를 밤 늦게 하게된다. 이전처럼 시간을 많이 투자하지 못하고 있는 상황인데,오늘자로 백준을 꾸준히 한지 100일째 되는 날이다. 상반기를 어영부영 끝내고나서 1일 1코테를 하리라 다짐했기에어떻게보면 취준을 본격적으로 시작한지 100일즈음 되었다는 얘기다. 마지막으로 LG 인턴 면접을 본게 6월 말인데 시간참 빠르다그 이후로 영어 공부, 개인 프로젝트 하느라 회사 지원을 못했는데이제 다시 면접 준비도 하고 지원도 슬슬 시작해야겠다.파이팅 [코딩 테스트 합격자 되기] 트리 [인프런] 코딩 테스트 합격자 되기 C++강의 링크 : https://www.youtube.com/watch?v=CXiVJgUjL6o&embeds_referring_euri=https%3A%2F%2Fwww.inflearn.com%2F&source_ve_path=MjM4NTE [트리 용어]차수 (degree) : 노드의 자식 수노드의 크기(size) : 자신을 포함한 모든 자손 노드의 개수[이진 트리 표현 - 배열]루트 노드 인덱스 : 1왼쪽 자식 노드 : 부모 노드 인덱스 * 2오른쪽 자식 노드 : 부모 노드 인덱스 * 2 + 1구현 쉽지만, 빈 공간이 많음 (메모리 공간 낭비) [이진 트리 표현 - 인접 리스트]각 리스트의 인덱스는 부모 노드자식 노드는 부모 노드에 해당되는 인덱스에 추가공간 활용도가 .. 알고리즘 문제 오답 노트 오답 노트알고리즘 문제를 풀며 틀린 원인 분석 및 새로 알게된 부분 정리 코딩 테스트 전 한번 보고 갈만한 노트1. 출력값에 % 10 (마지막 자리 수만 출력) 을 요구할 때는 조건을 모두 고려해서 계산 후 최종 값에 % 10 계산 필요 ex) 백준 16946 벽 부수고 이동하기 4 : 틀렸습니다 -> 맞았습니다2. 배열 크기가 너무 크면 배열 초기화에도 시간이 걸림 아래 코드 주석 부분 (방문 확인을 위해 checked 배열 사용) 을 set 으로 변경하여 시간 초과 해결 ex) 백준 16946 벽 부수고 이동하기 4 : 시간초과 -> 맞았습니다# count the number of grids can be movedcan_move = [[0] * M for _ in range(N)]f.. 모듈러 연산의 성질을 활용한 알고리즘 최적화 방법 백준 13172 Σ 문제를 풀면서, 재귀 호출을 사용한 거듭제곱 계산을 구현했다. 문제는 풀렸지만, 문제의 의도가 역원을 계산하는 방법을 사용하여 모듈러 연산을 해야하는 것 같고이에 대해 조금 더 깊게 공부해보고자 블로그를 작성한다. 모듈러 연산의 성질을 활용한 다양한 알고리즘 최적화 방법1. 모듈러 거듭제곱 (Modular Exponentiation)빠른 거듭제곱법(Exponentiation by Squaring)을 사용하여 큰 수의 거듭제곱을 모듈로 연산할 때 효율적으로 계산한다. 백준 13172 문제를 풀이했던 방법이다. 2. 모듈러 역원 (Modular Inverse)유클리드 호제법을 사용한 확장 유클리드 알고리즘을 통해 모듈러 역원을 계산한다. 이는 주어진 수 'a'와 모듈러 'm'에 대해 $.. 이전 1 2 3 4 5 6 ··· 8 다음