목록분류 전체보기 (184)
이숭간 공부기록
https://app.codility.com/programmers/lessons/9-maximum_slice_problem/max_double_slice_sum/ MaxDoubleSliceSum coding task - Learn to Code - Codility Find the maximal sum of any double slice. app.codility.com 문제풀이 : 어려웠던 문제다. 다른풀이를 참고해서 풀었다. 핵심은 Y를 기준으로 왼쪽의합과 오른쪽의 합을 구해서 이것의 최대를 구하는것이다. N이 십만이므로 O(N)시간에 풀어야한다. 여기서 왼쪽합의 시작은 인덱스 0부터 하고, 오른쪽합의 시작은 인덱스 n-1 즉 맨 양쪽끝으로 잡는데 이렇게하면 배열길이가 8이라고할때 (0,4,7)보다 (2..
https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 문제유형 : 행렬, 구현 문제풀이 : 2021 카카오페이인턴에서도 이런 행렬구현 문제가나왔다. 행렬의 부분을 따로빼서 조작하고 다시 붙인뒤 반복조작하는 느낌 카카오공채 '자물쇠와 열쇠' 코드도 딱 이런 느낌이다. 쿼리에 맞춰서 부분그래프를 빼낸다음 뺸 부분을 규칙에 맞게 테두리만 회전시킨다. 회전시킨 그래프를 다시 원래그래프에 넣는다. 쿼리가 ..
https://programmers.co.kr/learn/courses/30/lessons/1844 코딩테스트 연습 - 게임 맵 최단거리 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1 programmers.co.kr 문제유형 : BFS 문제풀이 : 전형적인 BFS문제로 풀면된다. 그래프상에서 상하좌우로 이동하면서 방문전이면서 이동가능한 위치를 큐에 삽입하면서 최단거리를 갱신한다. 최단거리를 갱신할때는 count배열의 기존값과 현재값 ( 이동하기전위치값 +1 )를 비교해서 더 작은값으로 갱신 처음에 count배열의 초깃값을..
https://programmers.co.kr/learn/courses/30/lessons/42860# 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 문제유형 : 그리디 문제풀이 : 생각보다 안풀려서 좀 애먹었다.. 나는그냥 alpha배열을 미리 만들어서 알파벳 변환의 최소비용은 쉽게 딕셔너리로 구했다. 좌우이동을 결정하는것에서 어려움을 겪었는데 이 문제가 그리디로 분류되있는 이유는, 현재지점에서 다음 A가아닌문자를 만날수있는 좌우이동중 더 작은 값을 갖는쪽으로 택해야하기 때문이다. 즉,..
자바의 String, StringBuilder, StringBuffer에 최대한 깊게 알아보자! Constant pool 자바 클래스 파일 구성항목중 하나인 Constant pool은 리터럴 상수값을 저장하는 곳이다. 문자열뿐만 아니라, 모든종류의 숫자, 문자열, 식별자이름등에 대한 인덱스를 번호로 제공한다. 즉, 런타임시점에 "hello"의 리터럴을 사용하는 메소드를 여러번 호출한다해도 새로운 메모리공간을 할당하는것이 아니라, Constant pool의 인덱스를 참조한다. 단, Constant Pool은 클래스단위로 관리되기때문에 같은 리터럴이라 하더라도 서로다른 클래스에서 등장한다면 다른 인덱스값을 갖는다. 정리 : CP를 사용해 이미 존재하는 문자열의 경우, 똑같은 문자열을 갖는 새로운 메모리공간을..
우선 엄연하게 말한다면 자바의 동작방식은 Call by Value이다. 이는 주소(레퍼런스)를 하나의 값으로 보기 때문이다. 자세히 알아보자 Call by Value(값에 의한 호출) 함수가 호출될 때, 메모리공간에서 함수를 위한 별도의 임시공간이 생성된다. (메모리 스택공간) 함수 호출시 인자로 전달되는 변수의 값(메모리에 저장되어있는)을 복사하여 함수의 인자로 전달한다. 복사된 인자는 로컬변수의 특성을 갖는다. 함수안에서 값이 변경되어도 외부 변수값은 변경되지 않는다. Call by Reference(참조에 의한 호출) 함수가 호출될 때, 메모리공간에서 함수를 위한 별도의 임시공간이 생성된다. (메모리 스택공간) 함수 호출시 인자로 전달되는 변수의 레퍼런스를 전달한다. 함수에서 인자값이 변경되면 레퍼..