회고에 앞서... 실제로 다른 사람들의 회고록은 많이 읽어봤지만 내가 직접 작성해본적은 없었다. 프리코스가 끝나고 프리코스 미션들을 재구현해보는 스터디를 진행하면서 회고록 작성도 해보자는 의견이 나왔다. 그래서 이번 기회에 회고록을 작성하면서 글 쓰기 실력을 늘려나가보려고 한다. 나의 코드 https://github.com/ChiwooKim/java-baseball-6 GitHub - ChiwooKim/java-baseball-6 Contribute to ChiwooKim/java-baseball-6 development by creating an account on GitHub. github.com 1주차 구현하기 전 나의 고민 이 때의 나는 첫 미션을 받았을 때 어떻게 시작을 해야할지 고민이 정말 많..
https://school.programmers.co.kr/learn/courses/30/lessons/118669 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 게이트에서 산봉우리까지 가는 길만 판단하면 된다. 어차피 같은 길로 내려오면 되니까. - heap을 이용하면 보다 시간복잡도도 해결되고 최소값을 먼저 꺼내 확인할 수 있다. - summits을 set 자료형 변환하여 봉우리인지 확인할 때 시간을 줄일 수 있다. from collections import defaultdict import heapq def solution(n, paths, ga..
https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 이 문제를 풀기 위해서는 트리구조와 순회방법에 대해 알아야 했다. - 먼저 포화이진트리로 형태를 맞춰주기 위해 주어진 수를 이진수로 변환 후 부족한 자리는 0으로 채워넣는다. - 문제의 예제에서는 트리는 0이 위치한 자리엔 노드가 존재하지 않고 1이 위치한 곳만 실제 형태로 남아있다. - 이진트리를 형성하기 위해서는 루트노드를 제외한 노드들은 부모 노드가 존재해야한다. - 만약 부모 노드가 ..
https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 해당 문제는 주어진 조건대로 하나씩 구현하는 문제이다. 핵심은 어느 방향, 얼마나 이동했는지 카운트가 중요했다. - k만큼 이동해야했기 때문에 최소 이동거리를 알아야 중간에 다른 곳으로 들러서 목표 지점에 도착 할 수 있다. 이때 최소 이동거리 경로에서 이탈한 후 다시 합류하기 위해 반드시 k는 최소 이동거리를 제외하고 값이 짝수가 되어야 했다. - 사전순으로 가장 앞에오는 명령어를 만들어야..
https://school.programmers.co.kr/learn/courses/30/lessons/181186 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 다른 사람의 힌트를 보고 푼 문제이다. 초반에 직접 세어가면서 했지만 아직도 이해가 조금 부족해서 설명은 어려울 것 같다. 코드는 참고용으로... - 자세한 힌트는 해당문제의 질문목록을 참고하도록 하자!!! - 혹시 잘 아시는 분이 계시다면 댓글로 남겨주세요.^^ def solution(n): dp = [0, 1, 3, 10] check = [8, 0, 2] if n > 3: dp += [0..
1. JDK 17 설치하기 저는 이전에 Java 11도 같은 방법으로 설치를 진행했었습니다.1. 오라클 웹사이트 접속하기 설치 파일 다운로드를 위해 아래 링크에 접속합니다. https://www.oracle.com/java/technologies/downloads/#java172. 설치파일 다운로드 본인의 PC운영체제에 맞는 파일을 다운로드 합니다. 제 pc의 경우 64비트 운영체제를 사용하기 때문에 x64 MSI Installer를 다운받았습니다. exe 파일을 받아서 설치하셔도 상관없습니다. 운영체제의 사양 확인방법은 다음과 같습니다. 시작 > 설정 > 시스템 > 정보 에서 장치사양의 시스템 종류를 확인하시면 됩니다.3. JDK 설치 다운로드 받은 JDK 설치파일을 실행합니다. 각 Setup 창에서 ..
https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제에서 구하고자 하는 것은 귤의 종류(크기)수를 최소화 하는 것이다. 즉, 해당 크기의 귤이 많은 순서대로 귤을 수확하여 k를 맞추면 된다는 것이다. - 문제에서 주어진 입력값(확인해야할 귤)은 최대 100,000 이므로 O(NlogN)이내로 설계 하면 문제를 해결할 수 있다. - 먼저, 종류(크기)별로 귤의 개수를 분류한 후, 반복문을 이용해 [귤 크기, 수]를 담은 리스트를 생성한다. ..
https://school.programmers.co.kr/learn/courses/30/lessons/214288 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 질문하기의 힌트를 참고해 해결했다. 이를 통해 itertools의 중복 조합 뽑기를 알게 되었으며, 멘토가 유형별로 배치되는 경우의 수를 쉽게 구할 수 있다. combinations(iterable, r)이 원소의 수가 r개인 조합을 생성하는 것이라면 combinations_with_replacement(iterable, r)는 원소의 수가 r개인 중복 조합 뽑기 이다. - heapq의 최소..
https://school.programmers.co.kr/learn/courses/30/lessons/12907 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - DP를 이용하는 문제인 것 같다. - 해당 문제는 앞서 포스팅한 백준의 동전 문제들과 유사? 가 아니라 그냥 같은 것 같다. https://kcw0360.tistory.com/4 [BAEKJOON] 9084 동전 - Python 9084번: 동전 (acmicpc.net) 9084번: 동전 우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로..
https://www.acmicpc.net/problem/2293 2293번: 동전 1 첫째 줄에 n, k가 주어진다. (1 ≤ n ≤ 100, 1 ≤ k ≤ 10,000) 다음 n개의 줄에는 각각의 동전의 가치가 주어진다. 동전의 가치는 100,000보다 작거나 같은 자연수이다. www.acmicpc.net - 앞서 포스팅한 동전 문제와 같은 dp문제이다. https://kcw0360.tistory.com/4 [BAEKJOON] 9084 동전 - Python 9084번: 동전 (acmicpc.net) 9084번: 동전 우리나라 화폐단위, 특히 동전에는 1원, 5원, 10원, 50원, 100원, 500원이 있다. 이 동전들로는 정수의 금액을 만들 수 있으며 그 방법도 여러 가지가 있을 수 있다. kcw0..
https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - stack을 이용하는 문제이다. - 입력되는 문자를 반복문을 통해 하나씩 체크하면서 여는 괄호('(') 일 때는 stack에 누적하고 닫는 괄호(')') 일 때는 스택에 쌓인 것을 하나 제거한다. - 중간에 stack에 없는데 닫는 괄호가 나오는 경우와 반복문이 끝나고 stack에 여는 괄호가 남아있는 경우는 올바르지 않은 괄호이다. - stack을 굳이 배열로 하지않고 숫자 카운팅으로 진행해..
https://school.programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - DP 문제였다. - dp를 하기 위해 테이블 초기값을 직사각형이 0., 1, 2개 일 때 값을 미리 설정해 준다. - 이후 3부터 n까지 아래 코드와 같은 식으로 테이블을 채워 나간다. def solution(n): dp = [0, 1, 2] # 2 x n 타일을 채울 때 n이 0, 1, 2일 때 나올 수 있는 경우의 수 if n > 2: # n이 3보다 큰 경우 진행 dp += [0] * (..
https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 1, 2, 4 세 가지 숫자기 때문에 3으로 나누어 나온 나머지를 answer 앞에 붙여서 수를 완성한다. def solution(n): answer = '' check = {1: '1', 2: '2', 0: '4'} while n > 0: answer = check[n % 3] + answer n = (n-1) // 3 return answer ※ 잘못된 점, 개선점 등이 있다면 언제든 댓글..
https://school.programmers.co.kr/learn/courses/30/lessons/181187 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 처음에 2중 for문으로 문제를 쉽게 하려했으나 역시 시간초과가 발생했다. for문을 한번만 쓰는 방법으로 해결했다. - 1사분면과 하나의 축 위에 있는 점만 계산하여 x4로 return 한다. - 축 위에 있는 점의 수는 r2 - r1 이며 r1 위에 있는 점도 가능하기 때문에 +1 을 해준다. - 0 < y < r2 사이의 y좌표를 따라 반복문을 진행한다. - 해당 y좌표에서 r2 내에 ..
https://school.programmers.co.kr/learn/courses/30/lessons/181188 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - greedy 문제이며 프로그래머스 Lv3 단속 카메라 문제와 거의 흡사한 문제이다. - 아래의 포스팅은 참고자료 단속카메라 참고자료이다. https://kcw0360.tistory.com/29 [programmers] Lv3 단속카메라 - Python https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개..
https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 카메라를 최소로 하기 위해 겹치는 구간을 찾는 문제이다. - 고속도로에서 나가는 점을 기준으로 해서 주어진 값들을 정렬을 한다. - 카메라 설치 위치는 정렬의 기준인 진출 지점으로 정한다. - 카메라 설치 위치가 현재 구간의 진입 지점 위치에 도달하지 못하는 경우에는 카메라가 추가로 필요하다. - 카메라 수를 늘리고 카메라 설치 위치를 진출지점으로 갱신해 주며 반복문 수행한다. def solu..
https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net - 남아있는 얼음의 합, 가장 큰 덩어리가 차지하는 칸의 수를 구하는 구현문제였다. - 조건에 따라 차례대로 구현을 진행했다. - 회전하는 부분이 헷갈렸다. for문 말고 딱히 어떻게 표현해야 할지 몰라서... - 그 이외에는 특별한게 없었고 얼음 덩어리 찾는 곳에서는 BFS를 사용하여 덩어리를 찾았고 max로 갱신하면서 진행했다. import sys input = sys.st..
https://www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net - 조건도 난도가 높거나 복잡하게 주어진 것이 아니었기 때문에 크게 어려움은 없었던 것 같다. - 토네이도의 이동(방향)과 조건대로 흩날리는 모래(그림)가 전부였던 문제 import sys input = sys.stdin.readline N = int(input()) sand = [list(map(int, input().split())) for _ in range(..
https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 투 포인터 알고리즘을 이용하여 특정한 합을 가지는 부분 연속 수열을 찾는 문제이다. - 알고리즘에 대한 자세한 설명은 나동빈 님의 이것이 코딩 테스트다 관련 유튜브를 참고하면 좋을 것이다. https://www.youtube.com/watch?v=ttLRltNDiCo&list=PLVsNizTWUw7H9_of5YCB0FmsSc-K44y81&index=39 def solution(sequence..
https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 입력받은 층 수를 각 자릿수로 분리하고 1의 자릿수를 가리키는 idx로 초기화한다. - 0층으로 내려가기 위해 돌의 개수를 최소로 소모하기 위해서는 해당 자리의 수가 어디에 위치해 있는지에 따라 아래로 내려갈 것인지 위로 올라갈 것인지 판단한다. - 가리키는 idx가 0 ~ 4인 경우는 내려가는 것이 돌의 소모가 적고 6~9인 경우는 올라가는 것이 돌의 소모가 적다. - 5에서는 경우의 수가..