분류 전체보기

java

static, static final - static 초기화

static 변수를 분명 100으로 초기화해줬는데, 0이 되는 문제가 발생했다!! class BookManagerImpl{ private static int MAX_SIZE = 100; private BookManagerImpl() { System.out.println(MAX_SIZE); //this.MAX_SIZE = 100; //System.out.println(MAX_SIZE); this.books = new Book[MAX_SIZE]; this.size = 0; } } 생성자에서 찍어 보니 처음에 0, 100으로 다시 초기화하니 100으로 찍혔다. 대체 왜 이런 일이 발생했을지 궁금해서 static, static final, final, 아무 필드 없이 만들어봤다. none : 100으로 초기화됨..

알고리즘/DFS BSF

프로그래머스 - 도넛과 막대 그래프

문제 https://school.programmers.co.kr/learn/courses/30/lessons/258711 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 그래프에 있는 도넛, 막대, 8자 그래프의 개수를 구하는 문제였다. 문제 풀이 사실 카카오 코딩테스트를 풀 때 이 문제는 시간이 없어서 덜 푼 문제였었다. 그때도 진입 노드를 저장해 진입 개수가 0인 곳이 root라고 생각은 했었는데, 풀다가 시간이 다 가버렸다.. 먼저 edges를 돌며 그래프를 만들고, 그래프를 만들면서 in에 각 노드의 진입 개수를 저장했다. 처음에는 진입 노드가 0이..

알고리즘/DFS BSF

백준 - 17070 파이프 옮기기 1

문제 https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 파이프를 맵의 마지막 위치로 옮길 수 있는 경우의 수를 구하는 문제였다. 문제 풀이 dfs로 완전탐색을 해서 풀 수 있었다. 처음 풀이 (고쳐서 맞추긴함) 문제를 풀다 시행착오가 2번 정도 있었다; 처음엔 문제를 제대로 읽지 않고 항상 3방향으로 갈 수 있는 상황이라 생각하고 풀어서 테케가 다 맞지 않았다. 그 다음에는 lx,ly,rx,ry를 넘겨 pipeDir를 구..

java

Singleton 디자인 패턴

Singleton 실제로 생성되는 객체가 하나 (한 번만 메모리 할당) 사용하는 경우 객체 구별 필요 없는 경우 (수정 가능한 멤버 변수 없이 기능만 있는 경우) stateless한 객체 객체 재생성/삭제에 많은 비용이 들어 재사용이 유리한 경우 프로그램 안에 해당 객체가 단 한 개만 있어야 할 때 여러 부분에서 해당 객체 공유할 때 이벤트 스케쥴링/처리 객체 기본 적용 외부에서 생성자 접근 금지 → 생성자 private 내부에서 직접 객체 생성 → 멤버 변수, private 외부에서 접근 가능하도록 getter 생성 (setter 불필요) 객체 없이 외부 접근 가능하도록 getter, 변수에 static 추가 → 외부에서는 언제나 getter 통해 객체 참조, 하나의 객체 재사용함 장점 메모리 절약 가..

알고리즘/동적 계획법 (DP)

백준 - 9465 스티커

문제 https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 서로 붙어있지 않은 스티커를 골라 가장 높은 점수를 구하는 문제였다. 문제 풀이 N이 100000이라 완전탐색으로 풀면 시간 초과가 날 것 같아서 dp로 풀었다. 처음에 예시만 보고 점화식을 만들어 풀었더니 틀렸다고 나와서 반례를 찾아 점화식을 수정했다. 0 : 50 1 : 100 50+50 vs 10 -> 100 2 : 200 100+100 vs 50+70 -> 200 3 : 2..

java

JVM 메모리 구조, 동작 과정

JVM ( Java Virtual Machine ) OS 위에서 Java 실행시켜줌 → OS에 종속받지 않음 프로그램 실행 중 런타임 데이터 영역 사용 컴파일러에 의해 자바 바이트 코드로 변경된 소스코드를 JIT 컴파일러가 바이너리 코드로 변환 JVM 구조 class loader class file을 읽으며 JVM 수행 (런타임 시 동적 로드) 클래스 처음 참조할 때, 로드/링크함 Execution Engine 바이트 코드를 기계어로 변경 Runtime Data Area에 있는 클래스 실행시킴 인터프리터 (Interpreter) 바이트 코드를 명령어 단위로 읽어 실행 (느림) JIT 컴파일러 (Just in Time) 인터프리터 방식으로 실행하다 적절 시점에 반복되는 바이트 코드를 전체 컴파일해 기계어로..

알고리즘/DFS BSF

SWEA - 1249 보급로

문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 복구에 가장 적은 시간이 드는 경로를 찾아 최소 시간을 구하는 문제였다. 문제 풀이 처음에 당연히 int로 입력될 것이라 생각하고 했더니 입력에서 오류가 나서 당황했다. 문제를 자세히 보니.. string으로 입력을 받아야 해서 굳이 이렇게..? 라는 생각을 하긴 했지만 바꿔서 입력받았다. 우선순위 큐를 이용해 걸리는 시간이 짧은 곳부터 방문하도록 했다. 처음에는 메모리 limit을 넘었다는 ..

알고리즘/DFS BSF

SWEA - 1248 공통 조상

문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15PTkqAPYCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 트리를 입력받고 주어진 노드 2개의 공통 조상을 찾고, 해당 조상의 서브 트리 크기를 구하는 문제였다. 문제 풀이 처음에 서브 트리 크기를 구하는 것을 서브 트리의 총 개수를 구한다고 생각했는데(풀진않고 생각만), 문제에 서브 트리 크기라고 아주 자세히 적혀 있었다. 먼저 공통 조상을 찾는 과정에서는 주어진 노드의 레벨을 확인해 같은 레벨로 만들어주고, 한 단계씩 레벨을 올려 같은 조상이 나오..

hahihi
'분류 전체보기' 카테고리의 글 목록 (6 Page)