본문 바로가기
728x90

전체 글279

[PG/Python] 숫자의 표현 📌 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12924 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 문제 접근 방법 n 이하의 자연수들 중에 연속으로 더해서 n이 되는 수를 찾는 문제 n 이하의 자연수 x부터 시작해서 k개의 수를 더해서 n이 된다고 가정하면 다음과 같은 식이 나온다. x + (x+1) + (x+2) + ... + (x+k-2) + (x+k-1) = n 이를 계산하면, k(2x+k-1)/2 = n 이를 x를 기준으로 치환하면 x = n/k - (k-1)/2 x는 자연.. 2022. 10. 3.
[Algorithm] Pregix Sum (누적합, 구간합) 누적합, 구간합 배열의 일부 구간에 대한 합을 빠르게 구할 수 있음 N개의 원소의 합을 구하는 경우 완전 탐색으로 구하면 O(N) 구간합으로 구하면 O(1) 1차원 배열 sum이라는 리스트를 만들어서 sum[i]에 arr[0] ~ arr[i-1] 의 합을 저장 0 부터 i 까지의 합을 구하고 싶은 경우 : sum[i+1] i 부터 j 까지의 합을 구하고 싶은 경우 : sum[j+1] - sum[i] 2차원 배열 sum이라는 리스트를 만들어서 sum[i][j]에 arr[0][0] ~ arr[i-1][j-1] 의 합을 저장 (0, 0) 부터 (i, j) 까지의 합을 구하고 싶은 경우 : sum[i+1][j+1] sum 리스트를 만드는 방법? # arr는 n*n 배열 # 1. 행단위로 더하고 열단위로 더하기 .. 2022. 9. 19.
[PG/Python] 메뉴 리뉴얼 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 📌 문제 접근 방법 orders를 문자열의 길이로 내림차순 정렬, course를 오름차순 정렬한다. (코스에 들어갈 메뉴의 개수보다 order의 길이가 작으면 필요없기 때문에 pop을 하기 위해 사전 처리) course를 순회하며 코스에 들어갈 메뉴 개수를 정하고 원하는 개수보다 적은 개수의 메뉴를 주문한 경우는 제외하기 위해 pop해준다. 각 주문에 대.. 2022. 6. 24.
[PG/Python] 광고 삽입 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/72414?language=python3 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 📌 문제 접근 방법 아이디어를 참고한 풀이 : https://dev-note-97.tistory.com/156 시간을 모두 초로 바꾸어서 Memoization을 사용한다. 로그의 시간을 all_time 리스트에 저장할 때, 반복문을 사용해서 start부.. 2022. 6. 24.
[BOJ/Python] 2477. 참외밭 📌 문제 https://www.acmicpc.net/problem/2477 2477번: 참외밭 첫 번째 줄에 1m2의 넓이에 자라는 참외의 개수를 나타내는 양의 정수 K (1 ≤ K ≤ 20)가 주어진다. 참외밭을 나타내는 육각형의 임의의 한 꼭짓점에서 출발하여 반시계방향으로 둘레를 돌면서 지 www.acmicpc.net 📌 문제 접근 방법 ㄱ 모양의 도형의 넓이를 구하는 방법 : (큰 사각형 넓이) - (작은 사각형 넓이) 작은 사각형 한 변의 길이 : 가장 긴 변과 맞닿은 두변의 차의 절댓값 가장 긴 변 160과 맞닿은 두 변 : 30, 50 20 = abs(30 - 50) 📌 코드 # 백준 2477 참외밭 K = int(input()) lengths = [] max_even = max_odd = e.. 2022. 6. 9.
[BOJ/Python] 14499.주사위 굴리기 📌 문제 https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net 📌 문제 접근 방법 입력값을 모두 받은 뒤, 방향을 옮기기 위해 dxy를 만들었다. 인덱스를 4로 나눈 나머지를 쓰려고 남-동-서-북 순서로 리스트에 넣었다. dise에는 전개도에 그려진 번호대로 해당 번호에 적힌 숫자를 저장했다. 다만 리스트의 인덱스는 0부터 시작하므로 전개도의 번호에서 1을 뺀 인덱스에 저장된다고 생각.. 2022. 3. 5.
[PG/Python] 캐시 📌 문제 https://programmers.co.kr/learn/courses/30/lessons/17680 2022. 3. 3.
[BOJ/Python] 13460.구슬 탈출 2 📌 문제 https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net 📌 문제 접근 방법 입력 값을 모두 받아준 뒤, 빨간 공과 파란 공의 좌표를 찾아줬다. answer는 10을 넘어가면 -1을 리턴하므로 11로 초기화해준뒤, answer가 갱신되지 않고 그대로 11로 남아있으면 -1을 출력하도록 해줬다. move 함수는 (공의 행좌표, 열좌표, 행방향, 열방향)을 매개변수로 가진다. 한 번의 이동이 아닌,.. 2022. 3. 2.
[BOJ/Python] 21608.상어 초등학교 📌 문제 https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net 📌 문제 접근 방법 students라는 딕셔너리를 만들어서 학생의 번호를 key, 좋아하는 학생 번호 리스트를 value로 저장했다. room과 like_cnt라는 리스트를 만들어서 각각 학생들의 자리배치와 인접한 칸에 있는 좋아하는 학생 수를 저장했다. students 딕셔너리를 순회하며 room에 비어있는 자리를 모두 체크하였다. 델타 행렬을 사용하여 비어있는 자리와 인접한.. 2022. 2. 27.
[BOJ/Python] 20055.컨베이어 벨트 위의 로봇 📌 문제 https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 📌 문제 접근 방법 문제에서 제시한 방법대로 구현을 하는 거라 어렵진 않았는데, 문제가 헷갈리게 써있었다..😥 우선 컨베이어 벨트 위에 맨 처음에는 로봇이 하나도 올려져있지 않은 상태이고, 1에서 4까지 모두 수행한 사이클이 1단계임을 숙지하고 구현해보자! 테스트 케이스 3번과 4번에서 자꾸 틀렸었는데, 질문 게시판을 보니 '가장 먼저 벨트에 올라간 로봇부터' 라는 .. 2022. 2. 27.
728x90