링크: https://www.acmicpc.net/problem/1783 1783번: 병든 나이트 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 주어진다. N과 M은 2,000,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 아이디어 n이 1이면 무조건 1칸 n이 2면 m이 4칸이 최대 아니면 (m-1)//2+1만큼 이동 가능 min으로 판단.(4번 이상 움직이려면 모든 방법을 다 한번이상 사용해야 하는데 그러지 못하니 최대가 4칸임) m이 6보다 작거나 같을때 4번 이상으로 움직인다고 하면, 1~4번 방법을 모두 써야 하므로 최댓값은 4가 될 것이고, 최소값은 자신 가로의 길이가 될 것이다. 나머지 세로의 길이가 3 이상이고, 가로의 길이가 7이상인 경우는 4방법을 한 번 ..
링크: https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 그냥 number문자열에서 k만큼 반복문으로 가장 작은 수를 제거하면 되는거 아닌가? 구현(틀림) def solution(number, k): answer = '' number = list(number) for i in range(k): number.pop(number.index(min(number))) return "".join(number) 하나 실패 틀린 원인 분석1 아이디어..
링크: https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 아이디어 백트래킹을 통해 수열 구함 방문처리로 본인은 다시 선택하지 못하게 함 remember 변수로 중복되는 수열이 나오지 않도록 구현 구현 import sys input = sys.stdin.readline def dfs(): if len(temp) == m: print(*temp) return remember = 0 for i in range(n): if not visited[i] ..
Greedy Algorithm(탐욕 알고리즘)이란? greedy의 사전적 의미는 욕심 많은, 탐욕적인 이라는 형용사다. 그럼 욕심 많은, 탐욕적인 알고리즘이 도대체 뭐야?? 간단하다 진짜 말 그대로 매 순간마다 욕심적으로 최적의 상황만을 고르는 알고리즘이다. 특징 탐욕 알고리즘은 크게 두 가지 특징이 있다. 1. 탐욕 알고리즘은 데이터 사이의 관계(단계별 관계)를 고려하지 않고 수행을 한다. => 이는 탐욕스러운 선택의 조건은 앞의 선택이 이후의 선택에 영향을 주지 않는다고 볼 수 있다. 2. 일단 선택한 것에 대해 절대로 번복하지 않는다. => 이미 선택된 데이터를 버리고 다른 것을 선택하지 않는다. (그래프 탐색은 아니라는 이야기) 이러한 특징들 때문에 대부분의 탐욕 알고리즘들은 매우 단순하며, 반면..
링크: https://school.programmers.co.kr/learn/courses/30/lessons/59041 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 SELECT NAME, COUNT(NAME) AS 'COUNT' FROM ANIMAL_INS GROUP BY NAME HAVING COUNT(NAME) > 1 ORDER BY NAME 포인트 제발 COUNT SUM AVG들은 HAVING이랑 같이 써야한다는 것을 잊지말자... !!!
링크: https://school.programmers.co.kr/learn/courses/30/lessons/132202 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 SELECT MCDP_CD AS 진료과코드, COUNT(*) AS 5월예약건수 FROM APPOINTMENT WHERE APNT_YMD LIKE '2022-05%' GROUP BY 진료과코드 ORDER BY 5월예약건수, 진료과코드 포인트 SELECT에서 사용한 칼럼명을 GROUP BY, ORDER BY에 가져와서 쓴 부분 익숙해지자!
링크: https://www.acmicpc.net/problem/17144 17144번: 미세먼지 안녕! 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사 www.acmicpc.net 아이디어 첫 미세먼지의 좌표와 공기 청정기의 좌표를 미리 저장해 둔다. bfs에서 상요한 큐를 이용해 미세먼지를 확산시킨다. 확산된 배열을 복사해서 저장 공기청정기를 작동 위아래 별개로 구현 원하는 만큼 반복은 bfs인자로 t를 넘겨 한 번 확산 청정을 실행할 때마다 -1 t가 0이 되면 미세먼지의 양을 sum을 통해 구해 출력 구현(메모리, 시간 모두 최악) import sys inpu..
링크: https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 www.acmicpc.net 아이디어 bfs로 탐색을 시작 +1과 -1은 cnt를 증가시키고 *2는 그냥 위치만 이동 *를 할 때 0이 되면 무시 (무한반복방지) k에 도착했을 때 k의 cnt 출력 구현(99% 실패) from collections import deque def bfs(N): visited = [0] * 100001 q = deque() q.append(n) whi..