본문 바로가기

프로그래머스66

프로그래머스 Lv1 나이 정보가 없는 회원 수 구하기 (MySQL) 나이 정보가 없는 회원 수 구하기 풀이 SELECT COUNT(*) AS USERS FROM USER_INFO WHERE AGE IS NULL; 아래 방법도 가능하다. 나이 정보가 없으면 1, 나이 정보가 있으면 0으로 해놓고, 그 모든 값을 SUM()시켜서 출력시킨다. SELECT SUM(CASE WHEN AGE IS NULL THEN 1 ELSE 0 END) AS USERS FROM USER_INFO; 2024. 2. 2.
프로그래머스 Lv1 NULL 처리하기 (MySQL) NULL 처리하기 풀이 COALESCE()를 이용해 NULL이면 No name을 입력시켰다. SELECT ANIMAL_TYPE, COALESCE(NAME, "No name") AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC; 아래처럼도 가능하다. SELECT ANIMAL_TYPE, CASE WHEN NAME IS NULL THEN 'No name' ELSE NAME END AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID ASC; 이러면 만약 Sugar인 이름을 okok로 바꾸고 싶다면 또 아래처럼 할 수 있다. SELECT ANIMAL_TYPE, CASE WHEN NAME = 'S.. 2024. 2. 2.
프로그래머스 Lv1 이름이 있는 동물의 아이디 (MySQL) 이름이 있는 동물의 아이디 풀이 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID ASC 2024. 2. 2.
프로그래머스 Lv2 최솟값 만들기 (python) 최솟값 만들기 풀이 처음엔 어떻게 하지 인덱스를 다 돌리면서 확인을 해야하는건가 아니면 완전탐색을 이용해야하는 건가 그런 생각을 하다가, 수학적 접근을 했다. 최솟값을 만들어야 하는데 최댓값이 나오는 제일 먼저는 A의 제일 큰 수와 B의 제일 큰 수를 곱하고, 그 다음의 큰 수와 그 다음의 큰 수를 곱하기 를 반복하면 만들 수 있는 최댓값이 된다. 그러면 최솟값은 내가 가진 제일 큰 수를 제일 작은 수와 곱하고, 그 다음 큰 수를 그다은 제일 작은 수와 곱하기를 반복하면 된다. 이유는 어쨌든 모든 수는 한 번씩은 곱해져야하니까. 이 방법으로 A와 B 둘 모두 정렬시키고, 하나는 오름차순, 다른 하나는 내림차순으로 진행하였다. 그리고 for문을 통해 각 곱의 합을 진행시켜주니 해결되었다. def solut.. 2024. 2. 2.
프로그래머스 Lv2 숫자 변환하기 (python) 숫자 변환하기 풀이 처음에는 재귀로 풀려고 했다가 너무 많은 재귀로 실패해서, 이후엔 어떻게 풀어야 하는지 감도 안 잡혔다. 찾아보니 BFS나 DP로 풀어야 한다고 했다. 너무 오랜만에 만지는 BFS라 감을 잃었지만 다시 시도해봤다. 우선 다음처럼 풀었다. 1. visited를 생성 2. queue를 생성하고 Q에 초깃값으로 x를 입력 3. visited [x]를 0에서 1로 입력 3-1. 찾고 나서 1빼줄건데, 1로 해준 이유는 0을 False처럼 다루기 위해서임 4. while문을 진행하기. Q의 처음 값을 확인하고, y가 아니면 할 수 있는 3가지를 이용하기. 3가지가 제한 없는 내용이라면, visited [다음 수]에 visited [이전 수]+1 입력 5. 3가지 방법을 통해서 나온 중 Q에서 .. 2024. 2. 1.
프로그래머스 Lv2 이진 변환 반복하기 (python) 이진 변환 반복하기 풀이 주어진 문자열이 '1'이 될 때까지 이진 변환을 반복하면서 반복 횟수와 함께 지운 0의 개수를 반환해야 하는 문제이다. 반복을 몇 번 해야하는지 모르므로 while문을 이용했다. 제거한 0의 갯수를 입력한 변수 생성 및 while문 생성 while문 안에서 count('0')를 이용해서 0 제거 1의 갯수만큼으로 다시 2진수로 변환시키니 bin()을 이용하고, 이렇게 하면 0b~~ 로 출력되니 슬라이싱을 이용 반복 횟수 +1 및 while문에서 나오면 return값을 return 하기 def solution(s): count_zero = 0 i = 0 while len(s) > 1 and s != '1': i += 1 count_zero += s.count('0') s = bin.. 2024. 2. 1.