전체 글

회고/프리코스

[우아한 테크코스 6기] 프리코스 1주차 숫자 야구 게임

회고에 앞서... 실제로 다른 사람들의 회고록은 많이 읽어봤지만 내가 직접 작성해본적은 없었다. 프리코스가 끝나고 프리코스 미션들을 재구현해보는 스터디를 진행하면서 회고록 작성도 해보자는 의견이 나왔다. 그래서 이번 기회에 회고록을 작성하면서 글 쓰기 실력을 늘려나가보려고 한다. 나의 코드 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주차 구현하기 전 나의 고민 이 때의 나는 첫 미션을 받았을 때 어떻게 시작을 해야할지 고민이 정말 많..

Alogorithm/programmers

[programmers] Lv3 등산코스 정하기 - Python

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..

Alogorithm/programmers

[programmers] Lv3 표현 가능한 이진트리 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/150367 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 이 문제를 풀기 위해서는 트리구조와 순회방법에 대해 알아야 했다. - 먼저 포화이진트리로 형태를 맞춰주기 위해 주어진 수를 이진수로 변환 후 부족한 자리는 0으로 채워넣는다. - 문제의 예제에서는 트리는 0이 위치한 자리엔 노드가 존재하지 않고 1이 위치한 곳만 실제 형태로 남아있다. - 이진트리를 형성하기 위해서는 루트노드를 제외한 노드들은 부모 노드가 존재해야한다. - 만약 부모 노드가 ..

Alogorithm/programmers

[programmers] Lv3 미로 탈출 명령어 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/150365 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 해당 문제는 주어진 조건대로 하나씩 구현하는 문제이다. 핵심은 어느 방향, 얼마나 이동했는지 카운트가 중요했다. - k만큼 이동해야했기 때문에 최소 이동거리를 알아야 중간에 다른 곳으로 들러서 목표 지점에 도착 할 수 있다. 이때 최소 이동거리 경로에서 이탈한 후 다시 합류하기 위해 반드시 k는 최소 이동거리를 제외하고 값이 짝수가 되어야 했다. - 사전순으로 가장 앞에오는 명령어를 만들어야..

Alogorithm/programmers

[programmers] Lv3 아방가르드 타일링 - Python

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..

Programming language/Java

[Java] Java 17 설치하기 - Window 11

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 창에서 ..

Alogorithm/programmers

[programmers] Lv2 귤 고르기 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 문제에서 구하고자 하는 것은 귤의 종류(크기)수를 최소화 하는 것이다. 즉, 해당 크기의 귤이 많은 순서대로 귤을 수확하여 k를 맞추면 된다는 것이다. - 문제에서 주어진 입력값(확인해야할 귤)은 최대 100,000 이므로 O(NlogN)이내로 설계 하면 문제를 해결할 수 있다. - 먼저, 종류(크기)별로 귤의 개수를 분류한 후, 반복문을 이용해 [귤 크기, 수]를 담은 리스트를 생성한다. ..

Alogorithm/programmers

[programmers] Lv3 상담원 인원 - Python

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의 최소..

Alogorithm/programmers

[programmers] Lv3 거스름돈 - Python & Java

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원이 있다. 이 동전들로..

Alogorithm/BAEKJOON

[BAEKJOON] 2293 동전 1 - Python

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..

Alogorithm/programmers

[programmers] Lv2 올바른 괄호 - Python & Java

https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - stack을 이용하는 문제이다. - 입력되는 문자를 반복문을 통해 하나씩 체크하면서 여는 괄호('(') 일 때는 stack에 누적하고 닫는 괄호(')') 일 때는 스택에 쌓인 것을 하나 제거한다. - 중간에 stack에 없는데 닫는 괄호가 나오는 경우와 반복문이 끝나고 stack에 여는 괄호가 남아있는 경우는 올바르지 않은 괄호이다. - stack을 굳이 배열로 하지않고 숫자 카운팅으로 진행해..

Alogorithm/programmers

[programmers] Lv2 2xn 타일링 - Python

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] * (..

Alogorithm/programmers

[programmers] Lv2 124 나라의 숫자 - Python

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 ※ 잘못된 점, 개선점 등이 있다면 언제든 댓글..

Alogorithm/programmers

[programmers] Lv2 두 원 사이의 정수 쌍 - Python

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 내에 ..

Alogorithm/programmers

[programmers] Lv2 요격 시스템 - Python & Java

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 프로그래머스 코드 중심의 개..

Alogorithm/programmers

[programmers] Lv3 단속카메라 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 카메라를 최소로 하기 위해 겹치는 구간을 찾는 문제이다. - 고속도로에서 나가는 점을 기준으로 해서 주어진 값들을 정렬을 한다. - 카메라 설치 위치는 정렬의 기준인 진출 지점으로 정한다. - 카메라 설치 위치가 현재 구간의 진입 지점 위치에 도달하지 못하는 경우에는 카메라가 추가로 필요하다. - 카메라 수를 늘리고 카메라 설치 위치를 진출지점으로 갱신해 주며 반복문 수행한다. def solu..

Alogorithm/BAEKJOON

[BAEKJOON] 20058 마법사 상어와 파이어스톰 - Python

https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net - 남아있는 얼음의 합, 가장 큰 덩어리가 차지하는 칸의 수를 구하는 구현문제였다. - 조건에 따라 차례대로 구현을 진행했다. - 회전하는 부분이 헷갈렸다. for문 말고 딱히 어떻게 표현해야 할지 몰라서... - 그 이외에는 특별한게 없었고 얼음 덩어리 찾는 곳에서는 BFS를 사용하여 덩어리를 찾았고 max로 갱신하면서 진행했다. import sys input = sys.st..

Alogorithm/BAEKJOON

[BAEKJOON] 20057 마법사 상어와 토네이도 - Python

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(..

Alogorithm/programmers

[programmers] Lv2 연속된 부분 수열의 합 - Python

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..

Alogorithm/programmers

[programmers] Lv2 마법의 엘리베이터 - Python

https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr - 입력받은 층 수를 각 자릿수로 분리하고 1의 자릿수를 가리키는 idx로 초기화한다. - 0층으로 내려가기 위해 돌의 개수를 최소로 소모하기 위해서는 해당 자리의 수가 어디에 위치해 있는지에 따라 아래로 내려갈 것인지 위로 올라갈 것인지 판단한다. - 가리키는 idx가 0 ~ 4인 경우는 내려가는 것이 돌의 소모가 적고 6~9인 경우는 올라가는 것이 돌의 소모가 적다. - 5에서는 경우의 수가..

Dorobo
Step By Step