링크: https://school.programmers.co.kr/learn/courses/30/lessons/133024 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 SELECT FLAVOR FROM FIRST_HALF order by TOTAL_ORDER desc , SHIPMENT_ID 포인트 ORDER BY ORDER BY 칼럼명 DESC => 내림차순 정렬 ORDER BY 칼럼명 ASC(안 붙여도 됨) => 오름차순 정렬 ORDER BY 칼럼1 DESC, 칼럼 2 => 칼럼1에 대해 내림차순 정렬 후 칼럼 2에 대해 오름차순 정렬!
링크: https://school.programmers.co.kr/learn/courses/30/lessons/131112 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE "강원도%" ORDER BY FACTORY_ID; 포인트 WHERE 컬럼명 LIKE "..." 찾을 단어로 끝나는 데이터 검색: '%[찾을 단어]' 찾을 단어로 시작하는 데이터 검색: '[찾을 단어]%' 찾을 단어가 들어가는 데이터 검색: '%[..
링크: https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 s가 1이면 -1 넣고 리턴 곱했을 때 가장 큰 수가 나오려면 곱하는 모든 수가 골고루 커야한다. s를 n으로 나누고 나머지를 각 수에 뿌려준 수가 곱했을 때 가장 큰 수가 나온다. 이 후 오름차순으로 리턴 구현 def solution(n, s): answer = [] if s == 1: answer.append(-1) else: a = s//n b = s%n if b==0: fo..
링크: https://school.programmers.co.kr/learn/courses/30/lessons/12987 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 아이디어 A,와 B를 오름차순 정렬 작은 A의 요소를 이기는 가장 작은 B의 요소를 매칭시키며 for문을 돈다. 이기는 B요소를 찾으면 그 다음 작은 A의 요소를 다루기 위해 idx를 +1 그리고 이기는 경우를 찾았으니 cnt +1 cnt return 구현 def solution(A, B): A.sort() B.sort() idx = 0 cnt = 0 for i in B: if A[idx]
링크: https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 아이디어 그냥 백트래킹으로 2명을 뽑는 경우 2가지를 만들고 만들어졌을 때 스타트와 링크의 전력차이를 구하여 최소값과 비교하며 저장하면 될듯? 구현(틀림) import sys input=sys.stdin.readline def back(): global minv if len(tmp) == 2: start = li[tmp[0][0]][tmp[0][1]] + li[tmp[0][1]][tmp[0][0]] link =..
링크: https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, 곱 www.acmicpc.net 아이디어 부호의 개수만큼 부호가 들어있는 배열 생성 그 배열의 수열의 경우의 수를 구하는 백트래킹 생성 경우가 만들어지면 계산하여 리스트에 저장 리스트에서 최대 최소값을 출력 구현 (시간초과) import sys input = sys.stdin.readline # 부호가 올 수 있는 모든 경우의 수 백트래킹 def back(): i..
링크: https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 아이디어 3번 문제에서 백트래킹 함수의 인자로 현재 숫자를 넘겨서 그 숫자부터 반복문을 돌리면 될 듯 구현 import sys input = sys.stdin.readline def back(cnt): if len(road) == m: for i in road: print(i, end=" ") print() return for i in range(cnt, n): road.append(i+..
링크: https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 아이디어 전 N과 M 1, 2번 문제에서 백트래킹 내부 반복문의 조건만 없애주면 될 듯? 구현 import sys input = sys.stdin.readline def back(): if len(road) == m: for i in road: print(i, end=" ") print() return for i in range(n): road.append(i+1) back() road...
링크: https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 아이디어 백트래킹을 이용 road배열에 값을 넣으며 백트래킹을 진행하고 road의 길이가 m과 같아질 때 road 출력 백트래킹의 인자는 현재 숫자의 다음 숫자를 인자로 넘겨주어 그 수부터 다시 백트래킹을 진행하게 함 다시 돌아올 때에는 pop을 이용해 road를 다룸 import sys input = sys.stdin.readline def back(cnt): if len(road) =..