
https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 풀이완전탐색이다board 전체를 완전탐색해서 사라질 블록들을 찾아 제거하고, 다시 또 완전탐색해서 사라질 블록들을 찾아 제거하는 것을 반복한다. board는 한 번 탐색하고 블록을 제거하고나면 상태가 달라지기 때문에 다시 완전탐색을 해서 새로 사라질 블록을 찾아 제거해야 한다.while True: # board 탐색을 반복할 while문 # board를 탐색하기 위한 이중 for문 for i in range(m - 1): for ..

https://www.acmicpc.net/problem/159611. 풀이입력이 매우 크므로 일반 input() 대신 빠른 sys.stdin.readline()을 사용하자.N의 크기가 무려 3,000,000이다. 알고리즘이 정답이더라도, 입력 받는 데서 시간이 지체되면 결국 실행 시간이 오래 걸리게 된다. 실제로 오랜만에 백준을 풀어서 습관처럼 input()을 사용했다가 시간 초과가 났었다. 어떤 초밥을 몇 개 먹었는지 저장하는 리스트(dishes)를 사용하자.리스트의 인덱스가 초밥의 종류를 나타내고, 해당 인덱스의 값이 고객이 그 초밥을 의미한다.고객이 먹을 수 있는 초밥 가짓수의 최대값은, 고객이 연속해서 먹은 k개의 접시에 쿠폰 번호 c가 포함되어 있지 않은 경우이다. 이를 다르게 생각하면 고객..

https://www.acmicpc.net/problem/14891 1. 풀이(n - 1)번째 결과를 바탕으로 가장 최소 비용을 만드는 n번째 선택을 하자.이전 결과를 담을 2차원 리스트가 필요하다. 행은 몇 번째 집인지를 의미하고, 열은 R(0), G(1), B(2) 중 어떤 색을 선택했는지에 대한 정보를 나타낸다. 위 그림은 백준의 첫 번째 입력 예제를 바탕으로 만들어진 2차원 리스트이다.예를 들어 1번 집을 초록색과 파란색 중 더 비용이 작은 색을 칠하고, 2번 집에 빨강(R)을 칠한다면 그 비용은 dp[1][0]에 담긴다. 이를 식으로 나타내면 dp[1][0] = min(dp[0][1], dp[0][2]) + COSTS[1][0]이다.그런데 사실 2번 집에 빨간색이 아니라, 초록색 혹은 파란..

https://school.programmers.co.kr/learn/courses/30/lessons/388351 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 1. 풀이모듈러 연산(%)으로 미리 주말 인덱스를 계산해두자.월요일이 1부터 시작하므로 토요일과 일요일은 6, 7이다. 따라서 각 케이스에서의 토요일과 일요일을 나타내는 인덱스는 (6 - startday), (7 - startday)이다. 그럼 이렇게가 끝인가? 아니다!만약 startday가 일요일이라면? 일요일 인덱스는 0이지만, 토요일 인덱스는 -1이 돼 버린다. 따라서 토요일, 일요일 인덱스를 구할 때는 (6 - startday) % 7..

https://www.acmicpc.net/problem/14891 1. 풀이회전하는 톱니바퀴의 왼쪽과 오른쪽을 나눠 각 톱니바퀴의 회전 여부를 파악하자 만약 2번째 바퀴를 회전시킨다면, 그것의 왼쪽에 있는 바퀴들과 오른쪽에 있는 바퀴들을 따로따로 고민해야 한다. 왼쪽을 먼저 보자. 2번째 바퀴의 왼쪽 부분, 즉 인덱스 6과 1번째 바퀴의 오른쪽 부분, 인덱스 2를 비교해야 한다. 두 자성이 다르기 때문에 1전째 바퀴는 2번째의 반대 방향으로 회전한다. 그리고 이제 1번째 바퀴의 인덱스 6과 0번째 바퀴의 인덱스 2를 비교해야 하는데, 0번째 바퀴가 없으므로 비교를 종료한다. 그럼 이제 오른쪽 방향을 살펴보자. 2번째 바퀴의 인덱스 2와 3번째 바퀴의 인덱스 6을 비교면하면 두 자성이 같음을 알 수 있다..

내용 구성호이스팅(Hoisting)변수 호이스팅 (Variable Hoisting)함수 호이스팅 (Function Hoisting)TDZ (Temporal Dead Zone)요약 정리마치며 참조 자료https://ui.toast.com/weekly-pick/ko_20191014[코딩만화] Scope가 뭔가요? (feat: let, const, var의 차이) (youtube.com)1. 호이스팅(Hoisting)이란?변수나 함수의 선언이 해당 스코프의 최상단으로 끌어 올려지는 행위이다. 변수와 함수가 호이스팅 되는 경우가 살짝 다른데, 자세히 알아보자. 참고로 var, let, const로 선언한 변수, function 선언과 화살표 함수 모두 호이스팅된다! 다만 let, const, 화살표 함수는 va..

https://school.programmers.co.kr/learn/courses/30/lessons/131704 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 풀이메인 컨베이어 벨트에서 꺼내는 택배 상자 번호를 n으로 두자.택배 상자는 번호 증가 순으로 메인 컨베이어 벨트에서 내릴 수 있다. 따라서 n = 1로 초기화하고, 보조 컨베이어 벨트나 트럭에 실을 때마다 1씩 증감해주자. 보조 컨베이어 벨트는 스택 자료 구조이다.보조 컨베이어 벨트에 마지막으로 보관한 상자부터 꺼낼 수 있다. Last In, Last Out. 스택 자료 구조이다. (1단계..

https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr1. 풀이n x m 행렬A과 m * b 행렬B를 곱한 행렬은 n * b (m이 동일해야 곱셈 가능) 3중 for문을 사용하자.행렬A의 첫 번째 행인 [1, 1, 1]이 행렬B의 각 컬럼( [1, 4, 7], [2, 5, 8], [3, 6, 8])과 연산된다. 따라서 일단 행렬A의 행에 접근하는 for문이 필요하다.그리곤 이제 하나의 행에 대해 3개의 열이 연산되어야 하므로, 컬럼을 인덱싱하는 반복문이..

내용 순서 스코프 (Scope) 글로벌 스코프 (Global Scope) - Script, Global 함수 스코프 (Function Scope) 블록 스코프 (Block Scope) 스코프 체인 (Scope Chain) 요약 정리 마치며 참고자료 JavaScript - Execute context (youtube.com) [NHN FORWARD 2021] 결국 자바스크립트를 알아보기로 했다. (youtube.com) 1. 스코프 (Scope) 범위라는 영단어인 스코프는 자바스크립트에서도 코드가 접근할 수 있는 변수들의 범위를 의미한다. 넓은 의미론 이전에 포스팅했던 실행 컨텍스트의 메모리 영역에 해당한다고 보면 된다. 여러 종류의 스코프가 존재하고, 각 스코프를 잘 이해하는 것이 중요하다. 또 다른 핵..

내용 구성 상황과 문제점 전략 패턴(Strategy Pattern)이란? 소셜 로그인 인터페이스 정의 Controller 코드 수정 Service 코드 수정 마무리 1. 상황과 문제점 요약: 확장성이 고려되지 않은 기존 소셜 로그인 코드에, 카카오 로그인 기능을 추가해야 하는 문제! 현재 프로젝트는 애플 로그인만 지원한다. 기획할 때부터 그러기로 했고, 그렇게 개발과 1차 배포를 끝냈다. 프로젝트를 재정비하면서 카카오 로그인을 추가 지원하기로 결정했다. 내가 카카오 로그인 기능을 맡았으므로, 일단 기존 소셜 로그인 코드를 확인했다. @Controller('auth') export class AuthController { @Post('login') login(@Req() request, @Body() cr..