링크: https://school.programmers.co.kr/learn/courses/30/lessons/12911 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 조건 2와 조건 3의 관계를 찾는게 관건인 문제같다. 그냥 단순 for문을 돌아 1의 갯수를 카운트하여 다음 큰 수를 찾는 방법은 무리가 있을까? n이 1,000,000 이하여서 큰 영향은 없지 않을까? 일단 한 번 해보자 구현 def solution(n): #n을 2진수로 변환 후 1의 개수 카운트 cnt1 = bin(n).count("1") tmp = 1 #n을 1씩 키우며 2..
링크: https://www.acmicpc.net/problem/1339 1339번: 단어 수학 첫째 줄에 단어의 개수 N(1 ≤ N ≤ 10)이 주어진다. 둘째 줄부터 N개의 줄에 단어가 한 줄에 하나씩 주어진다. 단어는 알파벳 대문자로만 이루어져있다. 모든 단어에 포함되어 있는 알파벳은 최대 www.acmicpc.net 처음 생각 길이를 기준으로 정렬 for문을 돌며 이웃한 요소의 길이차를 비교 길이가 다르면 그 다른 길이만큼의 알파뱃에 큰수부터 부여 길이가 같다면 길이가 같은 문자열이 더 있는지 계속 확인 확인이 끝난 후 각 문자열의 맨 앞에있는 알파뱃을 가지고 누구의 알파뱃이 이웃한 요소에서 먼저 나오는지 확인. 먼저 나오는 알파뱃부터 큰 수 부여 이런 식으로 가장 큰수를 찾아보려 했다.. 하지만..
링크: 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에 가져와서 쓴 부분 익숙해지자!