[문제]https://www.acmicpc.net/problem/21610어려울 거 없는 구현 및 시뮬레이션 문제입니다. 문제에서 제시한 대로 순서대로 코드를 작성하면 되겠습니다. 구현 시 주의할 점은 주어진 격자의 양 끝이 연결되어 있는 구조라는 것입니다. 즉 0열에서 왼쪽으로 이동하면 n-1열로 이동할 수 있고 이는 반대의 경우도 가능하며 행에도 적용됩니다.[초기화] def __init__(self): self.n, self.m = map(int, input().split()) self.grid = [list(map(int, input().split())) for _ in range(self.n)] self.move_info = [tuple(map(int, ..
전체 글
알고리즘 및 개발과 관련하여 학습한 것들을 기술합니다.2주 차는 DP에 대해 학습했습니다. 저는 DP, 이분탐색/이진탐색과 같이 최적화 관련 유형들을 제대로 풀지 못하기 때문에 이번 기회에 학습해 보려 합니다. 우선 DP의 개념에 대해 다시 정리하는 시간을 가졌습니다.[ Dynamic Programming의 개념]DP( Dynamic Programming)하나의 큰 문제를 여러 개의 작은 문제로 나눠 점진적으로 해결하며 해당 결과를 이용해 기존의 큰 문제를 풀어내는 방법나눠진 문제는 규모만 작을 뿐 기존의 문제와 동일한 문제구현 방식MemoizationTop-down재귀를 이용해 큰 수를 작은 수로 쪼갬TabulationBottom-up반복문을 이용해 작은 수에서 큰 수로 늘려감이론적으로 두 방식의 시간 복잡도는 동일하나, 일반적으로는 Tabulation이..
·Java
이클립스 터미널의 기본 경로는 다음과 같이 설정 합니다.상단 메뉴에서 Window → preferences → Terminal → Local Terminal 선택Initial Working Directory 드롭 다운 → User home에서 Eclipse workspace로 변경Apply and Close
[문제]https://www.acmicpc.net/problem/26086지문을 읽었을 때, 크게 어렵게 느껴지는 문제는 아니지만 최적화를 수행해야 한다는 점, 개인적으로 지문을 제대로 파악하지 못했던 점에서 다소 어려움이 있었던 문제입니다. 해당 문제의 관건은 요구사항대로 그대로 구현하되, 불필요한 연산을 수행하지 않음으로써 성능을 보장하는 것입니다.[초기화] def __init__(self): self.n, self.q, self.k = map(int, input().split()) self.cmd = [tuple(map(int, input().split())) for _ in range(self.q)][풀이] def solve(self): last_o..
[문제]https://www.acmicpc.net/problem/2812주어진 숫자에서 순서는 유지한 채, k개의 수를 제거해 큰 수를 만들어내는 문제입니다. 즉 숫자들을 재조합하는 문제가 아니라는 것입니다. https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr프로그래머스의 해당 문제와 동일한 문제입니다. 숫자를 순서대로 순회 및 스택에 저장해, 스택의 숫자를 순간마다 가장 큰 수로 유지하면 해결 가능한 문제입니다. 출력 방식에 따라 소요 시간이 약 ..
1주 차는 구간 칠하기 유형에 대해 학습을 진행하였습니다. 작년 봄쯤에 해당 유형 문제를 독특하게 해결했던 기억이 납니다. 아래 문제의 경우 각 선분의 영역을 포함하는 집합을 생성해, 합집합 연산을 통해 공통되는 부분을 추려 총길이를 구하는 방식으로 해결하였습니다.https://school.programmers.co.kr/learn/courses/30/lessons/120876 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 해당 유형을 딱히 접해본 적이 없어서 아예 유형으로 정형화 되어있는지 몰랐기 때문에 이번 기회에 학습을 진행하였습니다.[블럭쌓는 명령2]..
·Git
1. Repository 생성github 접속 후, 다음 중, 하나를 선택해 repository를 생성합니다.좌측 상단 > Top repository > New우측 상단 > 본인 프로필 > Your repositories > New사용자 이름과 동일한 이름으로 Repository name 지정README 추가저의 경우 이미 만들어 놓은 상태이기 때문에 해당 레포가 이미 존재하고 있다는 경고가 발생합니다.레포의 이름을 사용자 이름으로 지정하면 프로필을 설정할 수 있는 레포로써 작용하게 됩니다. 이후 프로필은 README 편집을 통해 가능합니다.2. README 수정README는 마크다운 문법으로 작성됩니다. 취향에 맞게 편집하신 후 저장하면 되겠습니다.3. 기술 스택 배지 추가하기저의 경우 대부분 아래 레..
[문제]https://www.acmicpc.net/problem/17404 RGB 거리와 동일한 문제입니다. 다만 제약 조건으로 1번 집의 색과 n번 집의 색상이 서로 달라야 한다는 조건이 추가되었습니다. 해당 문제의 기본 규칙은 서로 인접한 집의 색상이 서로 달라야 한다는 것입니다. 기존 RGB 거리에서의 풀이는 현재 주어진 색상으로 칠한다고 가정했을 때, 바로 직전의 집들 중 해당 색상을 제외한 비용 중, 최소를 선택해서 갱신하면 되는 것이었습니다. 하지만 첫 번째 집과 마지막 집의 색상이 서로 달라야 하므로 처음 색상을 고정하는 추가적인 절차가 필요합니다. 해당 과정은 풀이에서 상세하게 다루겠습니다.[초기화] def __init__(self): self.n = int(input()..
[문제]https://www.acmicpc.net/problem/7579 앞선 설명이 장황하지만, 메모리는 주어진 메모리에 맞추면서 비용은 최소화하는 최적화 문제입니다. 최근에 응시한 코딩테스트에서 냅색 문제가 출제되었기 때문에 해당 풀이 방식으로 접근하였습니다.[초기화] static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static StringTokenizer st, st1, st2; static int n, m; // n개의 앱, 필요한 m의 메모리 static int[] a; static int[] c; static int[] table; static int answer = Integer.MAX_VALU..
[문제]https://www.acmicpc.net/problem/9328 개인적으로 문제가 다소 까다로웠습니다. 처음엔 주어진 좌표에서 벽이 아닌 공간을 모두 담아 탐색을 진행했는데, 각 상황에 대한 예외 처리를 어떻게 할지 몰라 다른 사람들의 풀이를 참조하였습니다. 접근은 BFS를 수행하며 모든 지역을 탐색하고 당장 열 수 없는 문의 위치를 따로 저장해 열 수 있는 상황이면 탐색 범위에 추가하는 접근 방식으로 문제로 해결하였습니다. 여담으로 삼성전자의 SW 역량테스트 B형도 그렇고 BFS를 어렵게 내면 밟았던 곳을 다시 방문하는 경우를 처리해야 하는 등 다소 까다로워질 수 있는 거 같습니다.[초기화] static BufferedReader br = new BufferedReader(new java.io..