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

More Related Content

Similar to Study_1st_sineunjj

03.basic nag removal header problems hangul
03.basic nag removal   header problems hangul03.basic nag removal   header problems hangul
03.basic nag removal header problems hangulre4lfl0w
 
프로그램 기초
프로그램 기초프로그램 기초
프로그램 기초Minsuk Lee
 
선형 최소 자승 최적화
선형 최소 자승 최적화선형 최소 자승 최적화
선형 최소 자승 최적화Jubok Kim
 
딥러닝은수능이다
딥러닝은수능이다딥러닝은수능이다
딥러닝은수능이다Inhwang Yang
 
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)Sangsu Song
 
[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)해강
 
프로토타이핑 테스트
프로토타이핑 테스트프로토타이핑 테스트
프로토타이핑 테스트YoonKab
 
프로토타이핑 테스트 2
프로토타이핑 테스트 2프로토타이핑 테스트 2
프로토타이핑 테스트 2YoonKab
 
스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers 스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers ServerDevCamp
 
'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편' 미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편'  미리보기'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편'  미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편' 미리보기지연 이
 
[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)해강
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝Sang-Min Park
 
0602대준아미대가자
0602대준아미대가자0602대준아미대가자
0602대준아미대가자지은 이
 
2011~2012 소프트웨어 관련도서 추천 리뷰 모음
2011~2012 소프트웨어 관련도서 추천 리뷰 모음2011~2012 소프트웨어 관련도서 추천 리뷰 모음
2011~2012 소프트웨어 관련도서 추천 리뷰 모음Choulhyouc Lee
 
소프트웨어개발자이야기 2017 p2
소프트웨어개발자이야기 2017 p2소프트웨어개발자이야기 2017 p2
소프트웨어개발자이야기 2017 p2Suho Kwon
 
'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편' 미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편'  미리보기'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편'  미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편' 미리보기지연 이
 
디미컨 어린이컴퓨터교육 7주차
디미컨 어린이컴퓨터교육 7주차디미컨 어린이컴퓨터교육 7주차
디미컨 어린이컴퓨터교육 7주차jiyein
 
Data를 추출하는 자세
Data를 추출하는 자세Data를 추출하는 자세
Data를 추출하는 자세Soo-Kyung Choi
 

Similar to Study_1st_sineunjj (20)

03.basic nag removal header problems hangul
03.basic nag removal   header problems hangul03.basic nag removal   header problems hangul
03.basic nag removal header problems hangul
 
프로그램 기초
프로그램 기초프로그램 기초
프로그램 기초
 
선형 최소 자승 최적화
선형 최소 자승 최적화선형 최소 자승 최적화
선형 최소 자승 최적화
 
딥러닝은수능이다
딥러닝은수능이다딥러닝은수능이다
딥러닝은수능이다
 
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
언플러그드 활동의 이론과 실제(Unplugged Activity / Computing)
 
[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)[Dev rookie] 무엇을 하고 있습니까(13.05.11)
[Dev rookie] 무엇을 하고 있습니까(13.05.11)
 
프로토타이핑 테스트
프로토타이핑 테스트프로토타이핑 테스트
프로토타이핑 테스트
 
프로토타이핑 테스트 2
프로토타이핑 테스트 2프로토타이핑 테스트 2
프로토타이핑 테스트 2
 
스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers 스마일게이트 서버개발캠프 - 5vengers
스마일게이트 서버개발캠프 - 5vengers
 
'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편' 미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편'  미리보기'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편'  미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 곱셈 편' 미리보기
 
[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)[Dev rookie] 어디로 가야 하나요(13.10.05)
[Dev rookie] 어디로 가야 하나요(13.10.05)
 
창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝창발 세미나 - Bing에서의 머신러닝
창발 세미나 - Bing에서의 머신러닝
 
0602대준아미대가자
0602대준아미대가자0602대준아미대가자
0602대준아미대가자
 
2011~2012 소프트웨어 관련도서 추천 리뷰 모음
2011~2012 소프트웨어 관련도서 추천 리뷰 모음2011~2012 소프트웨어 관련도서 추천 리뷰 모음
2011~2012 소프트웨어 관련도서 추천 리뷰 모음
 
소프트웨어개발자이야기 2017 p2
소프트웨어개발자이야기 2017 p2소프트웨어개발자이야기 2017 p2
소프트웨어개발자이야기 2017 p2
 
Pattern Writing
Pattern WritingPattern Writing
Pattern Writing
 
Pattern Writing
Pattern WritingPattern Writing
Pattern Writing
 
'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편' 미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편'  미리보기'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편'  미리보기
'바쁜 5,6학년을 위한 빠른 연산법 - 나눗셈 편' 미리보기
 
디미컨 어린이컴퓨터교육 7주차
디미컨 어린이컴퓨터교육 7주차디미컨 어린이컴퓨터교육 7주차
디미컨 어린이컴퓨터교육 7주차
 
Data를 추출하는 자세
Data를 추출하는 자세Data를 추출하는 자세
Data를 추출하는 자세
 

Study_1st_sineunjj

  • 2.
  • 3.
  • 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 구문에서 간단하게 집계함수만 써주면 되는 문제입니다.