문제 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를 구..
Singleton 실제로 생성되는 객체가 하나 (한 번만 메모리 할당) 사용하는 경우 객체 구별 필요 없는 경우 (수정 가능한 멤버 변수 없이 기능만 있는 경우) stateless한 객체 객체 재생성/삭제에 많은 비용이 들어 재사용이 유리한 경우 프로그램 안에 해당 객체가 단 한 개만 있어야 할 때 여러 부분에서 해당 객체 공유할 때 이벤트 스케쥴링/처리 객체 기본 적용 외부에서 생성자 접근 금지 → 생성자 private 내부에서 직접 객체 생성 → 멤버 변수, private 외부에서 접근 가능하도록 getter 생성 (setter 불필요) 객체 없이 외부 접근 가능하도록 getter, 변수에 static 추가 → 외부에서는 언제나 getter 통해 객체 참조, 하나의 객체 재사용함 장점 메모리 절약 가..
문제 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..
JVM ( Java Virtual Machine ) OS 위에서 Java 실행시켜줌 → OS에 종속받지 않음 프로그램 실행 중 런타임 데이터 영역 사용 컴파일러에 의해 자바 바이트 코드로 변경된 소스코드를 JIT 컴파일러가 바이너리 코드로 변환 JVM 구조 class loader class file을 읽으며 JVM 수행 (런타임 시 동적 로드) 클래스 처음 참조할 때, 로드/링크함 Execution Engine 바이트 코드를 기계어로 변경 Runtime Data Area에 있는 클래스 실행시킴 인터프리터 (Interpreter) 바이트 코드를 명령어 단위로 읽어 실행 (느림) JIT 컴파일러 (Just in Time) 인터프리터 방식으로 실행하다 적절 시점에 반복되는 바이트 코드를 전체 컴파일해 기계어로..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 복구에 가장 적은 시간이 드는 경로를 찾아 최소 시간을 구하는 문제였다. 문제 풀이 처음에 당연히 int로 입력될 것이라 생각하고 했더니 입력에서 오류가 나서 당황했다. 문제를 자세히 보니.. string으로 입력을 받아야 해서 굳이 이렇게..? 라는 생각을 하긴 했지만 바꿔서 입력받았다. 우선순위 큐를 이용해 걸리는 시간이 짧은 곳부터 방문하도록 했다. 처음에는 메모리 limit을 넘었다는 ..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15PTkqAPYCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 트리를 입력받고 주어진 노드 2개의 공통 조상을 찾고, 해당 조상의 서브 트리 크기를 구하는 문제였다. 문제 풀이 처음에 서브 트리 크기를 구하는 것을 서브 트리의 총 개수를 구한다고 생각했는데(풀진않고 생각만), 문제에 서브 트리 크기라고 아주 자세히 적혀 있었다. 먼저 공통 조상을 찾는 과정에서는 주어진 노드의 레벨을 확인해 같은 레벨로 만들어주고, 한 단계씩 레벨을 올려 같은 조상이 나오..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15OZ4qAPICFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 회사 → 고객 집들 → 집 순서로 모든 곳을 돌 때, 가장 짧은 거리를 구하는 문제였다. 문제 풀이 모든 경우의 수를 다 구해서 풀면 되는 문제였다. #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; int N; int hx, hy, wx, wy; //집, 회사 좌표 int cusMap[11][2]; ..
문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LwsHaD1MDFAXc SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 최소의 클릭수로 지뢰찾기 게임을 완료하는 문제였다. 문제 풀이 처음에 각 testcase마다 map과 visit vector를 매번 새로 만들어 초기화하면서 풀었는데 시간초과가 났다. dfs나 bfs로 완전탐색을 해야만 풀리는 문제 같은데 대체 어디서 초과가 나는 것인지를 모르겠어서 isInsid(), changeMap()과 같은 함수를 그냥 main과 dfs에서 풀어쓰고, 최대한 빨리 if문..