4. 오늘의 목표 알고리즘은 많이 보면 익숙해져요
그러니까 제가 생각한 접근법을 보고 여러분들만의 알고리즘 푸는 법을 생각해보세요
이론에 대한 내용은 되게 많이 다른 친구들이 할 거 같아서
코테 준비하는 김에 접근 어떤식으로 하면 좋을지에 대해 생각해 봤습니다.
여기 나오는 문제는 대부분 3~4 레벨 정도 되는 문제에요.
사실 이게 막 알고리즘 종류 막 뭐로 풀기 이런게 들어간 게 아닐 수도 있어요.
5. 이문제 어디서 많이 본 문제죠?
확률과 통계시간에 본 듯한 문제와 비슷합니다.
그렇기 때문에 더욱 쉽게 접근이 가능합니다.
종류별로 몇가지가 있는지만 알면 말이죠
python에는 함수가 있어서 쉽게 각 종류별
갯수를 구할 수 있었습니다.
구한 뒤에 각 경우의 수를 +1를 하여 곱해줍니다
왜냐하면 안쓸 그 종류의 옷을 안입을 경우도
있으니까요 그리고 맨 마지막 답 숫자에서 -1을
해줍니다. 모두다 안입으면 안돼니까요
6.
7. 복잡한 숫자 계산도 쉽게 계산 가능합니다.
일단 문제를 풀 때 저렇게 케이스를 여러가지 준다는 것은 여러가지
케이스가 있다는 것이므로 if 분기가 여러개임을 표현합니다. 이걸
알고 문제를 읽어보면 다 줄 수 있는 경우는 다 주고 아니면 상한액 줘라
이렇게 두가지 경우로 나뉘는 걸 볼 수 있죠? 첫번째 분기는 그냥
리스트 값 다 더한뒤에 예산보다 작은지를 확인하고 그렇다면
리스트에서 제일 큰 값이 상한액이 됩니다. 두번째 분기부터는 일단
예산을 리스트의 갯수대로 나누면 평균이 나옵니다. 이때 평균보다
낮은 숫자들은 예산을 할당해 줍니다. 그럼 전체 예산에서 평균 보다
낮은 숫자들을 뺀 값이 나머지 할당 할 수 있는 값이 됩니다.
그 값을 남은 예산할당 지역의 수로 나눠주면 최대로 줄 수 있는
상한액이 나오게 됩니다.
8.
9. 이문제 어려울 수 있어요. 제가 그랬습니다.
어떻게 해야 소수를 만들지 고민했거든요.
근데 반대로 생각해보면 일단 모든 숫자를 3개씩
다 더해보면 됩니다. 어떻게 하면 소수를 만들지를
고민하는게 아니라 일단 다 만들고 보는거죠.
그리고 난 뒤에 그 숫자들이 소수인가? 를 체크
해보면 간단하게 해결 되는 문제입니다.
사실 이런 노가다식 문제해결이 안될때도 있지만
정확한 로직이 떠오르지 않으면 그냥 다 해보는
것도 하나의 방법입니다.
10.
11. SQL문제는 두개로 나뉩니다.
JOIN과 NOJOIN 정말 쉽습니다. 테이블이 한개다?
JOIN신경 쓰지 않으셔도 됩니다. 그런데 여러개다?
백퍼 JOIN문제입니다. JOIN도 여러가지가 있는데
이 문제는 양쪽 테이블의 다 있는 값을 연결 해야함으로
inner join입니다. 각 조인을 구분하는 방법은 그
수학에 나오는 집합 모양을 그려보면 정말 쉽게
어떤 조인인지 알 수 있습니다. 인터넷에 나와있어요.
join을 하고 난 뒤에 이제 조건을 분석해야죠.
들어올 때는 아니고 나갈때는 된 친구만 달라. 라는게
조건이죠? 그러면 where에 조건을 추가 하면 됩니다.
그리고 난 뒤에 마지막 조건인 order by를 마지막
구문에 넣으면 답을 도출 할 수 있습니다.
12.
13. SQL문제에서 가장 헷갈리고 복잡한 문제가
JOIN, GROUP BY 문제입니다. 하지만 이 두문제를
풀줄 아신다면 SQL로 보는 코딩 테스트는 정말
쉽게 통과하실 수 있습니다. GROUP BY를 언제
써야하는지를 아는 것이 핵심인데요. 문제에서 각
종류별로의 정보를 알아야 한다면 GROUP BY를 사용
해야 하는 문제입니다. 왼쪽 문제처럼말이죠.
더 쉽게 설명하자면 같은 컬럼안에서 종류를 나누는
문제는 모두 GROUP BY 문제입니다. 이 문제는
그룹으로 나눈 뒤 SELECT 구문에서 간단하게
집계함수만 써주면 되는 문제입니다.