목록분류 전체보기
Step-by-Step
22년 상반기는 첫 취준이니만큼 대한민국의 사회의 엄청나게 쓴 맛과 "나만한 사람은 어디에나 있구나" "더 뛰어나야 하구나" 를 뼈저리게 느낀 반년이었다. 그래도 열심히 찾아보고 몇 안되는 원서들 중에서 조금이라도 날 이해해준 회사들 덕분에 많은 경험을 했다 여러 대기업의 코딩 테스트를 통해서 얻은 동기부여로 백준 사이트에 가입한 이후로 가장 오랜 기간 동안 코딩 공부를 했고, 아직 많이 부족한 실력이지만 그래도 골드1 티어를 얻게 되었다 (골드만 엄청 팠다) 또한 후반에는 카카오 계열사 면접, 현대 계열사 면접을 보게 되었고 IT와 제조업이라는 서로 다른 분야에서 SW 개발자로서 갖춰야 할 역량과 나의 부족한 부분을 깨닫게 되었다 학교의 커리큘럼으로 만들어진 프로젝트 경험 말고, 내가 직접 따로 공부하..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/clKalL/btrWw6QMuRR/GVjNCZ0jLiacbEMgjkWt30/img.png)
https://www.acmicpc.net/problem/17825 17825번: 주사위 윷놀이 주사위 윷놀이는 다음과 같은 게임판에서 하는 게임이다. 처음에는 시작 칸에 말 4개가 있다. 말은 게임판에 그려진 화살표의 방향대로만 이동할 수 있다. 말이 파란색 칸에서 이동을 시작하면 www.acmicpc.net 입력 10개 출력 1개라 오랜만에 Scanner를 써봤다! 삼성 코테는 풀이가 정말정말 길다.... 그래도 해냈을때 얻는 성취감 ! (잃어버린 5시간) ※ 주의할 점 1. 분기점 10, 20, 30, 40, 25 조심!! - 빨간색 루트 타고 도착한 40이랑 파란색 루트 타고 온 40이랑 같은 경우이니 꼭 체크하자 - 어느 분기점에서 꺾어도 25 부분을 만나면 결승점으로 향하니 체크하자 2. 말을..
https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 바로 복습하기! 의도하지 않았지만 내가 다익스트라만 빼고 풀었나보다 남은게 다익스트라네 '_' 이전 최단경로처럼 풀면 답은 나오지만 시간 초과가 난다. PQ에 넣게 되면, A → B로 이동하는 버스 중 최소 비용이 앞으로 오는데, 이전에 먼저 들어간 높은 비용의 방법은 PQ에서 꺼내고 (연결된 도시를 확인하는) 나머지 작업을 생략시키면 된다. [이 부분 추가] /..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cajxfx/btrV7O3ksrt/G7DwKY6uGBcJYXxqdpTroK/img.png)
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 다익스트라의 쓴맛을 보았다.. ㅋㅋ 두 정점 사이의 간선이 여러 개 있을 수 있다고해서, 비교해서 최솟값만 저장하는 2차원 배열을 선언했는데 데이터 최대 개수와 메모리 제한을 생각하면 2차원 배열은.. 안 쓴다 해도 int[][]를 생성하면 0으로 가득찬 쓸데없는 메모리 차지가 크기 때문에, ArrayList를 사용하도록 하였다. 언제쯤 시간초과와 메모리초과를..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ckmSbM/btrVPueXW23/WjHAS71ZWs4JJHJfx0ajP1/img.png)
특정 구간에 있는 N개의 수들의 합을 구하는 경우 O(N)의 시간 복잡도가 생긴다. 얼핏 보면 여기서 더 좋은 방법이 있을까? 싶지만, 있다. (이번에 알게 되었음..) 시간을 절약하기 위해서는 특정 구간을 미리 알고 있으면 좋은데, 이때 세그먼트 트리를 사용한다. ※예를들어 0~4번째 수의 합과 5~9번째 수의 합을 알고 있다고 가정하자. 4~9의 합을 구하려면 원래는 6개의 숫자를 모두 꺼내서 더하는 6번의 작업을 거쳐야 하는데, 해당 방법을 사용하면 4번째 숫자와 5~8번째 합을 꺼내서 더하는 작업 2번만 수행하면 된다. 세그먼트 트리 (Segment Tree) 일정 간격에 대한 정보를 저장하는데 사용하는 트리 데이터 구조 특정 구간의 합을 구하는 작업시 유용하게 사용됨 세그먼트 트리 형태 1. F..
ArrayList에 객체를 넣고, 새로운 객체를 생성(new)해서 contains를 사용하면 무조건 false가 나온다 ArrayList arr = new ArrayList(); arr.add(new Cloud(3,4)); arr.contains(new Cloud(3,4)); // → false 객체 비교 자체가 안의 값보다 주소값으로 비교하기 때문에, 비교를 하고싶으면 == 말고 equals 연산자를 이용해야 한다 또한 contains는 equals 바탕으로 수행하기 때문에, 만약 ArrayList의 객체 비교를 원하면(=contains 사용을 원하면) equals를 override 해서 사용하면 된다 static class Cloud { public int x, y; public Cloud(int x..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bhnPQF/btrUorvlkPk/5HjJE5FONBATRxzAbJ4lI1/img.png)
https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 다음주부터는 C++ 집중해서 해야지! 삼성 코테스러운 문제다. DFS / BFS 사용하는 문제! 그냥 모든 경우의 수를 다 구한 뒤 최솟값을 구해주면 됨 출제자도 경우의 수가 eva..인거 아는지 놓는 사다리 개수를 3개로 제한했다 (DFS cnt==3이면 return으로 중단시키면 됨) ※ 더 좋은 방법이 있을 거 같아서 사다리 타기 선 긋기 원리 쳐봤는데 딱히 없는듯 2차원 배열 Map으로 ..
https://www.acmicpc.net/problem/1563 1563번: 개근상 백준중학교에서는 학기가 끝날 무렵에 출결사항을 보고 개근상을 줄 것인지 말 것인지 결정한다. 이 학교는 이상해서 학생들이 학교를 너무 자주 빠지기 때문에, 개근상을 주는 조건이 조금 독 www.acmicpc.net 3번의 시도 끝에 성공 N+1까지 경우의 수를 계속 붙여가면서 진행했는데, 내가 생각해낸 건 3가지 경우다 O : 출석 1번 AO : 연속된 결석 1번 AAO : 연속된 결석 2번 그리고 마지막이 A로 끝나는 경우를 대비하여 N+1까지 찾은 후, 마지막 O를 빼버렸다. 또 지각은 N+1까지 찾은 후 O를 빼고, O들 중 하나를 L로 바꾸는 방식으로 함 1차시도 : BFS → 메모리 초과 (C++로도 해봤는데 ..