프로그래머스
-
[프로그래머스] LV1. 문자열 나누기알고리즘 2023. 3. 9. 15:44
문제 https://school.programmers.co.kr/learn/courses/30/lessons/140108 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 1. while 문을 통해서 for문을 돌려서 첫번째 값과 같은지 다른지에 따라서 same과 diff값을 증가시키고 same == diff가 되는 순간에 s의 모양을 변화시키고, ans와 idx 를 증가시키는 방법을 사용했지만 런타임 에러가 뜬다 2. 내가 생각 못한점 - s의 길이가 1개일때,, 눈물의 테케 31번 진짜 ㅡㅡ 런타임 에러 계속 나서 짜증 났네,, - 만약 두 횟수가 ..
-
[프로그래머스] LV1. 푸드 파이트 대회알고리즘 2023. 3. 9. 14:57
문제 https://school.programmers.co.kr/learn/courses/30/lessons/134240 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 1. 가장 먼저 내가 생각한 바는 가운데 물을 중심으로 좌우 대칭하자 2. 좌우 대칭이면 처음 왼쪽 부분만 구해서 reverse 시키자 3. 좌를 구한다음에 [ ] 안에 반대의 순서로 하나씩 넣고 join( ) 를 돌림 풀이 def solution(food): ans1 = '' for i in range(1,len(food)): if food[i] >= 2: times = (food[..
-
[프로그래머스] LV1. 명예의 전당(1)알고리즘 2023. 3. 9. 14:40
문제 https://school.programmers.co.kr/learn/courses/30/lessons/138477 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 1. 이번 문제는 간단하다. k번째까지는 res에 담아주면서 최솟값을 ans에 담아준다 2. k번째 이후부터는 res의 최솟값보다 크면 최솟값이랑 score의 새로운 값이랑 변경 해주고 내림차순 정렬을 해주면 된다 3. 다만, k번째 이후 res의 최솟값보다 작다면 res의 최솟값을 ans에 담아줘야 한다는것을 잊지말자 풀이 def solution(k, score): ans = [sc..
-
[프로그래머스] LV1. 크기가 작은 부분 문자열알고리즘 2023. 3. 9. 14:27
문제 https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 1. 처음에는 조합으로 len(p) 길이로 나올 수 있는 모든 경우의 수를 체크해야하나 싶었는데, 문제를 제대로 읽어보니 틀렸다 2. t에서 len(p) 크기만큼 순차적으로 나오는 경우의 수를 확인해 봐야 한다 3. 그래서 len(p)로 잘랐을때 len(p) 길이와 같고 int 값으로 변경했을때 p보다 크다면 ans += 1 해줘가면 된다 풀이 def solution(t, p): an..
-
[프로그래머스] LV1 과일 장수알고리즘 2023. 3. 9. 14:02
문제 https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 1. 하나의 박스에는 m개의 사과만큼 담기 때문에 len(score) // m 이다. 2. 사과들을 내림 차순 정렬하고 " 금광 " 의 문제처럼 [idx:idx+m] 개씩만 ans에 담고 " 가장 품질이 낮은 사과의 가격 * 개수 "의 값들을 answer 에 더해가면서 값을 찾는다. 풀이 # 박스 가격 = 가장 낮은 상품 * 개수 def solution(k, m, score): ans..
-
[프로그래머스] LV1. 카드 뭉치알고리즘 2023. 3. 9. 13:17
문제 https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 1. 처음에는 card1, card2에 대한 조합 중에 goal과 같은게 있으면, Yes 없으면 No 를 return 하려고 했는데, 2가지 배열에 대한 조합 구하는 방법을 모르겠어서 PASS 2. 두번째로 생각한 방법은 for i in goal 이렇게 for문을 돌려서 i == cards1[0] 혹은 i == cards2[0] 일때마다 i == cards1 이면 cards1 = ca..
-
[프로그래머스] Lv1. 바탕화면 정리알고리즘 2023. 3. 8. 13:51
문제 https://school.programmers.co.kr/learn/courses/30/lessons/161990 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 그림으로 그려보면 결국 알수있는 점은 x1 = 가장 위쪽 , y1 = 가장 왼쪽 x2 = 가장 아래쪽 , y1 = 가장 오른쪽 을 표현하면 된다! 이다. 표현하기 위해서 x1,x2,y1,y2를 각각 초기화 해주고 ( 초기화는 범위를 잘 체크해주면 된다 ) , '#' 이 나올때마다 그 위치의 값을 적용시켜주면 된다. 참고로, elif i > x2 같은 코드를 적으면 #이 한개있을때를 만..
-
[프로그래머스] 섬 연결하기알고리즘 2023. 2. 15. 20:07
문제 섬을 연결하는데 cost가 있고, 최소비용을 구해야한다 -> 전형적인 크루스칼 문제이다 풀이 1. 먼저 " n개의 섬을 최소의 비용으로 서로 통행할 수 있게 만든다 " 에서 크루스칼 문제임을 알 수 있었다 2. costs 에 주어지는 값들은 [[x1,y1,cost], [x2,y2,cost] , ... , [xn,yn,cost]] 이렇게 생각하면 쉽다. 3. cost 기준으로 edges를 정렬한후 같은 집합에 속하지 않는 값들의 합을 구해서 반환하면 된다. 코드 # 크루스칼 def solution(n, costs): parent = [i for i in range(n+1)] def find(x): if x != parent[x]: parent[x] = find(parent[x]) return pare..