본문 바로가기

Problem Solving/programmers

(12)
[Programmers] 수식 최대화(Python) / 2020 카카오 인턴십 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 2020 카카오 인턴십 기출문제이다. Level2 인데 생각보다 까다로웠다. 사용 알고리즘 : 순열, 구현 처음 참고한 코드는 아래 링크로 남겨둔다. 저 분의 코드 흐름은 같으나, 난 permutation 라이브러리로 순열을 구현해 반복문으로 가장 순위가 높은 순으로 계산했다. 계산 시에는 eval 함수로 나온 정수를 다시 문자열로 바꾸며 계속 계산을 진행했다. grapetown.tistory.com/63 파이썬 코드는 다음과 같다. from itertools..
[Programmers] 정수 삼각형(Python) / Dynamic Programming 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr # 14분 소요 사용 알고리즘 : Dynamic Programming(동적 계획법) (가장 아래 행-1) 행부터 가장 아래 행의 값들을 참고해 더 큰 값을 선택해 더하면서 현 위치 값을 갱신해 올라온다. 가장 상단 행까지 값을 모두 채우면 첫 값(triangle[0][0])을 리턴한다. 파이썬 코드는 다음과 같다. def solution(triangle): for r in range(len(triangle)-2, -1, -1): for c in range(r+1): triangle[r][c] += max(triangle[r+1][c], ..
[Programmers] 등굣길(Python) / Dynamic Programming 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 사용 알고리즘 : Dynamic Programming(동적 계획법) 맵의 크기보다 행 + 1, 열 + 1 크기만큼 크게 만든다. 시작 위치(1, 1)는 넘어가고, 물 웅덩이(-1) 표시된 부분은 0으로 바꿔줌. 이외의 위치별로 좌, 상 방향의 숫자들을 더하며 끝까지 채운다. 가장 오른쪽 하단의 값(A[n][m])을 주어진 값(100,000,000,007)으로 나눈 나머지를 리턴한다. 파이썬 코드는 다음과 같다. def solution(m, n, pud..
[Programmers] 큰 수 만들기(Python) / Greedy programmers.co.kr/learn/courses/30/lessons/42883?language=python3 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 난 개인적으로 어려웠던 문제다. Greedy 알고리즘은 뭔가.. 쉽고도 어려운 알고리즘이다. stack 으로 구현한 Greedy한 풀이.. 어려워서 다른 사람 풀이를 참고했다. stack에 값이 있고, k가 남아있다면 stack의 마지막 값과 현재 value를 비교해 value가 크다면 k를 사용하며 stack의 마지막 값을 빼준다. 앞에서부터 탐색하며 비교해주기 때문에 k를 다 써버린다면 뒷 부분은 사실 그리디하게 풀 수 없기 때문에 최적해가 아닌 경우가 발생할 수 있겠다. 그리디의 약점이 무조건 최적해를 보장하지는 않는..
[Programmers] SQL 고득점 Kit - JOIN programmers.co.kr/learn/courses/30/parts/17046 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Programmers 코딩테스트 SQL 고득점 KIT JOIN 없어진 기록 찾기 -- 조인 이용 SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_OUTS AS O LEFT OUTER JOIN ANIMAL_INS AS I ON O.ANIMAL_ID = I.ANIMAL_ID WHERE I.ANIMAL_ID is NULL; 있었는데요 없었습니다 -- INNER JOIN SELECT O.ANIMAL_ID, O.N..
[Programmers] SQL 고득점 Kit - String, Data programmers.co.kr/learn/courses/30/parts/17046 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Programmers 코딩테스트 SQL 고득점 KIT String, Data 루시와 엘라 찾기 SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabrina', 'Mitty') ORDER BY ANIMAL_ID ASC; 이름에 el이 들어가는 동물 찾기 SELECT ANIMAL_ID, ..
[Programmers] SQL 고득점 Kit - IS NULL programmers.co.kr/learn/courses/30/parts/17045 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Programmers 코딩테스트 SQL 고득점 KIT IS NULL 이름이 없는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL; 이름이 있는 동물의 아이디 SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL ORDER BY ANIMAL_ID ASC; NULL 처리하기 SELECT ANIMAL_TYPE, IFNULL(NA..
[Programmers] SQL 고득점 Kit - SUM, MAX, MIN programmers.co.kr/learn/courses/30/parts/17043 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Programmers 코딩테스트 SQL 고득점 KIT SUM, MAX, MIN 최댓값 구하기 # MAX 사용한 권장 풀이 SELECT MAX(DATETIME) AS 시간 FROM ANIMAL_INS; # 정렬 후 상위 1개 출력 SELECT DATETIME AS 시간 FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1; 최솟값 구하기 # MIN 사용한 권장 풀이 SELECT MIN(DATETIME) as..