[CodeTree] Ch5.시뮬레이션 2 - dx dy technique
·
Algorithm
개념 : dx, dy 테크닉2차원 좌표(배열)에서 특정 좌표에서 위, 아래, 오른쪽, 왼쪽으로 이동한 좌표를 구할 때 쓰이는 4방향 탐색 방식을 `dx, dy 테크닉`이라 합니다. dy, dx 는 2차원 배열에서 4방향 탐색을 하는 것입니다. 따라서 수학 2차원 좌표에서 y가 + 되는 방향이, 2차원 배열에서는 인덱스가 감소하는 방향이 됩니다. 이때 시계방향으로 탐색할지, 반시계 방향으로 탐색할지에 따라 dy[4]배열의 값의 순서와 dx[4] 배열의 값의 순서가 달라집니다. Warmup : 방향에 맞춰 이동 https://www.codetree.ai/ko/trails/complete/curated-cards/intro-move-in-direction/description 방향에 맞춰 이동 설명 |..
[CodeTree] 5회차: 북마크로 틀린 문제, 삽질한 문제 복습하는 습관 만들기
·
Algorithm
북마크 관리방법 저는 다음과 같은 경우에 북마크에 저장한 후 다시 풀곤 했습니다. 설계 및 코드를 작성했으나 히든케이스 때문에 틀려서 못푼 경우설계하는데 많은 시간이 소요된 경우 = 삽질이 오래 걸린 경우 실행결과 시간/공간복잡도가 동일언어 다른 풀이와 비교했을 때 높은 경우 북마크 종류도 너무 많으면 결국 관리가 안되어 저장된 문제들을 '다시' 풀지 않을 것이기 때문에 3가지 경우로만 나눴습니다. 그리고 가장 중요한 `'언제' 다시 북마크에 저장한 문제를 풀까? `정하는 것이었습니다. 7일 뒤에 다시 푸는 것을 기본으로 잡았습니다. 그래야 기존 풀이 방법을 고수하지 않고 다시 처음부터 설계하는 능력을 키울 수 있다고 생각했기 때문입니다.북마크에 저장을 한 날 기준으로 7d일 뒤에 풀이할 때, 난이도 E..
[CodeTree] Ch5.시뮬레이션 2 - 배열 기록
·
Algorithm
`배열 기록`은 계속 유지해야하는 정보를 배열에 저장하는 유형을 의미한다. 배열 기록 유형 - 21. 시간에 따른 위치 - 매 초마다 위치를 배열에 저장. 인덱스 : 시간, 값 : 위치 2. 남은 횟수 배열로 기록하기 개념 : 시간에 따른 위치 A, B가 1초에 1m씩 움직입니다. A는 9초 동안 앞으로 움직이다가, 3초간 뒤로 오고, 다시 5초간 앞으로 움직입니다. B는 2초간 뒤로 갔다가, 앞으로 2초 갔다가, 1초간 뒤로 오고, 다시 12초간 앞으로 움직입니다. A, B가 움직임을 시작한 이후에 다시 만나게 되는 시간은 몇 초 뒤일까요? A,B의 시간에 따른 동선을 일직선 상에 표시하면 다음과 같습니다. 이때 A, B가 몇 초후에 최초로 만나는지를 구하고자 합니다. 주의할 점은 A, B가 위치상..
[CodeTree] Ch5.시뮬레이션 2 - 최장 연속 부분 수열
·
Algorithm
DP(Dynamic Programming)의 유형인 LCS(Longest Common Subsequence) 최장 공통 부분 수열과 다른 유형입니다.최장 연속 부분 수열은 구현 시뮬레이션 문제입니다. 개념 : 숫자가 동일한 연속 부분 수열수열이 (2, 2, 7, 7, 7, 7, 5, 7, 7) 다음과 같이 주어졌을 때, 연속해서 나오는 같은 숫자를 한 묶음이라 보면, (2, 2), (7, 7, 7, 7), (5), (7, 7) 총 4개 묶음이 나옵니다. 새로운 묶음이 생겨나는 순간에 개수를 세줍니다.새로운 묶음이 생겨나는 기준은 이웃한 이전 원소의 값과 현재의 값이 다를 때입니다. a[i] != a[i -1] || OR 연산자if( A || B)에서 A가 true이면 뒤의 B는 계산하지 않고 바로 {..
[CodeTree] 4회차: 코테 꾸준히 하고자 하는 습관을 지켜주는 환경 (feat. 학습 리마인더 알림톡)
·
Algorithm
학습 독려 : 학습 리마인더 알림톡 이번 주에는 자격증 시험이 2개나 겹쳐 있어서 코드트리를 꾸준히 하지 못했습니다. 저는 꾸준하게 하던 걸 중단하고 다시 시작하는데 많은 에너지가 소요되는 편입니다. 꾸준하게 할 때의 수준까지 도달하는데 얼마나 걸릴지 모르기 때문에 부담감이 생기기 때문입니다. 코드트리의 장점은 며칠 연속으로 문제를 꾸준히 풀었는지 기록하는 스트릭이 중단되면, 학습 텐션을 유지하는데 필요한 시간을 카카오톡 알림톡으로 학습 라마인드를 해줍니다. 원래 텐션으로 돌아가는데 생각한 시간은 1시간 넘을 줄 알았는데 생각보다 적은 학습 유지시간이 보이면 가볍게 1문제라도 풀게 되는 것 같습니다. 나만의 꾸준함을 만드는 방법기상 후 컴퓨터 키면 바로 코드트리 화면이 보이게한다기상 후 컴퓨..
[CodeTree] Ch4. 시뮬레이션1 - 사각형 칠하기
·
Algorithm
코드 트리 청약 챌린지 진행 중입니다! 관심 있으신 분들은 같이 참여해보세요 https://www.codetree.ai/ko/no-free-lunch-2026/?ref=T38PMZ 3년 만에 돌아온, 코드트리 청약 통장 챌린지 | 코드트리매주 학습 납입하고 7주 만기 채우면 코드트리 8월까지 무료. 매주 추첨권을 모아 맥북·에어팟·애플워치 응모까지. 신청 인원에 따라 조기마감될 수 있어요.www.codetree.ai 사각형 칠하기 1좌표상 사각형 넓이 구하는 방법 좌표상의 좌표 2개를 주고 좌표 안의 사각형 넓이를 구할 때는 좌표를 2차원 격자(배열)로 바꾸고, 좌표 안의 격차일 때 1 값을 저장해 넓이를 구한다. (x1, y1), (x2, y2) 좌표 영역의 사각형을 2차원 격자로 바꿀 때 오른쪽..
[CodeTree] 3회차: Trail2.시뮬레이션1 약점 학습 후기
·
Algorithm
처음 갭체크를 통해 약점 유형인 시뮬레이션부터 시작을 했습니다. 간단 후기 레슨은 기본 개념 -> Challenge -> Test 순으로 개념을 적용할 수 있는 문제를 제공합니다. 레슨을 3개 진행해보니,기본 개념에서 정의 및 여러 풀이 방법 소개, 최선 풀이 이유, 시각화 제공Challenge는 개념 1개를 알면 그 1개를 적용해서 풀 수 있는 문제를 제공하고,Test는 앞에 여러 개념을 배웠다면 이걸 한 번에 활용한 문제를 제공한 느낌을 받았습니다. 또한 배우지 않은 내용을 알아야 풀 수 있는 문제가 아니라서 문제를 이해할 때, 풀 때 부담감(스트레스)가 적었습니다. Lesson 소개1. 기본 개념 먼저 시뮬레이션의 유형인 1.날짜와 시간에 대한 개념을 먼저 소개를 합니다. 이전에 백준 실버 ..
[CodeTree 후기] 코드트리 청약 챌린지 참여 - 2회차 : 갭체크
·
Algorithm
백준 알고리즘 사이트가 종료되고 매일 꾸준히 알고리즘 문제를 푸는 습관을 기르고자 찾아보던 중 코드 트리의 청약 챌린지를 알게 되었습니다. 코드트리란?CodeTree도 백준 처럼 알고리즘 문제를 푸는 사이트이지만, 단계적으로 문제와 해설코드를 제공합니다. 체계적으로 배우고자 하는 분들에게 추천합니다. 대신 무료가 아닌 유료입니다. 제휴 대학이면 무료로 이용할 수 있지만, 아니더라도 대학 계정 인증을 통해 할인된 금액으로 정기권을 구매할 수 있습니다. 코테 청약 통장 챌린지 3년만에 코테 청약 통장 챌린지를 진행하고 있습니다. 이는 7주간 유료로 제공되는 코드트리 서비스를 무료로 이용할 수 있는 이벤트 입니다. 매주 학습 인증 시 통장 만기일(7주)까지 모든 콘텐츠를 '무료'로 이용할 수 있습니다. 무료..
[백준] 6234번 : 용돈 관리 (도식화 -> 로직 -> 코드)
·
Algorithm
https://www.acmicpc.net/problem/6236 용돈 관리 문제의 경우 번역이 모호한 것이 있어 문제 이해를 하는데 오래 걸렸습니다. 금액의 경우 총 4가지 종류가 있습니다. 1. 통장 금액2. 인출 금액 K 3. 현우가 하루 당 사용할 금액 a[i] 4. 잔액 = 인출 금액 K - 현우가 하루 사용할 금액 a[i] TIP 여기서 1. 통장 금액의 경우 금액이 무한정라고 생각해야 문제가 이해가 됩니다. 목표 M번 인출할 수 있을 때 인출 금액 K의 최솟값을 구해야합니다. 도식화 예시를 통해 문제를 이해해봅시다. 1) N = 2일 동안 M = 3 번 인출할 수 있고, 인출 금액(K)가 500원일 때, 현우가 2일 동안 100원, 400원이 필요하다면 1일 때 인출된 금액 500원..
[백준] 2828번 사과담기 게임 (C++)
·
Algorithm
https://www.acmicpc.net/problem/2828아이디어 및 주의사항사과담기 게임은 특정 값이 구간내에 존재하는지를 확인하고, 바구니의 이동거리를 계산하는 문제입니다. 저의 경우 이 구간을 설정하는 것에 어려움을 느꼈습니다. 왜냐면 문제는 [l, r], [l, r), (l,r) 등 구간의 왼쪽 끝, 오른쪽 끝을 포함하는지를 명시하지 않았기 때문입니다. 이럴 경우 예시를 통해 구간의 양 끝을 포함할지, 미포함할지 결정하면 됩니다. 구간 집합을 [이상, 미만)으로 결정했다면 이것을 문제 풀 때 끝까지 이끌고 가야합니다. 갑자기 구간을 [이상, 미만)으로 정의해놓고 구간 밖을 체크할 때 [이상, 이하]로 로직을 짜다보면 값이 계속 꼬이게 됩니다. 제가 몇 시간 동안 이 문제 때문에 해결을 하지..