프로그래머스
-
[프로그래머스] 수식 최대화알고리즘 2023. 7. 21. 11:29
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 개인적으로 어려웠다,,,, 1. expression에서 수식을 받아와서, st에 없는 연산자면, st에 넣어준다 2. st에 있는 연산자들에 permutation(순열)을 통해서 나올 수 있는 우선순위들을 전부 구한다 3. expressions 라는 새로운 배열에 숫자들은 묶고 ( ex - 1 0 0 은 100으로 묶어서 ) , 연산자는 연산자로 해서 배열에 넣어준다 4. 피..
-
[프로그래머스] 행렬의 곱셈알고리즘 2023. 7. 18. 15:23
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12949 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 1. 행렬의 곱셈은 arr1의 열 * arr2의 행 의 값들을 모아서 더한 값이다. -> 결국에는 "시그마" 임을 알아야 한다 2. 그래서 2차원 for loop가 아니라 3차원 for loop가 되어야 문제를 풀 수 있다 3. 풀이 def solution(arr1, arr2): n = len(arr1) m = len(arr2[0]) b = len(arr2) ans = [[0..
-
[프로그래머스] 멀쩡한 사각형알고리즘 2023. 7. 17. 11:27
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/62048 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 1. 가로 or 세로 둘중 한개만 1이여도 사용 가능한 정사각형은 없어서 return 0을 해준다 2. w == h 라는 말은 정사각형이라는 말로, w * h 에서 y = x 선에 해당하는 정사각형들을 빼주면 된다 3. 직사각형의 경우 패턴을 사용하면 된다. - 종이에 예시로 그려보면 패턴들이 나온다. - 최대공약수를 통해서 지울 수 있는 직사각형들을 구하고, 그 직사각형에서..
-
[프로그래머스] 이진 변환 반복하기알고리즘 2023. 7. 17. 10:31
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/70129 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 1. while문을 통해서 0의 개수, 0의 개수를 셀때마다 cnt를 증가한다. 2. "0" 인 부분은 "" 빈칸으로 바꿔준다 3. str을 2진수로 바꿔주는것은 bin()을 쓰면 되는데, 중요한것은 0을 뺀 s 값이 아니라 s의 길이를 2진으로 변환해야한다 3. 풀이 def solution(s): answer = [] cnt = 0 zero = 0 while s != '1'..
-
[프로그래머스] 귤 고르기알고리즘 2023. 7. 13. 13:52
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 1. 나는 dict() 을 통해서 귤의 크기에 따라서 개수를 내림 차순 정렬을 하고 k랑 cnt의 개수를 비교해서 ans를 구했다 : dict() -> 내림차순 정렬 -> value값 만큼 cnt를 증가시켜서 k랑 비교 -> ans 도출 2. Counter() 라는 메소드를 사용하면 dict() 없이도 가능하다,,, 3. 풀이 # dict()을 사용한 방법 def solut..
-
[프로그래머스] 예상 대진표알고리즘 2023. 7. 12. 14:10
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 1. 틀렸던 나의 풀이 [ 3번째 ] 를 보자 - 2 ** 최대횟수 = n이라는 것을 이용했다 [ math.log2(n) == 최대횟수 ] - 나는 a,b 사이에서 누가 더 큰지는 관심 없었고,n // 2 값을 기준으로 둘다 한방향 안에 있는가 없는가를 체크했다 - 한뱡향에 있다면 a,b 가 홀수 짝수 인지 판별하고, a,b,n 값을 조정했는데, test case에서 반타작,..
-
[프로그래머스] 점 찍기알고리즘 2023. 7. 11. 17:18
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 1. 처음에는 " y = -x + d " 라고 잘못 이해해서 시간좀 낭비했다 2. 원점과 하나의 좌표 거리 -> x**2 + y**2 test case1번 같은 경우 k가 2다 보니까 (2,2)는 되는데 (2,1)은 안된다. 이 점 때문에 math.floor한 값을 / k를 해준것이다. 4. 결론, 핵심은 2번을 이용하면서, k간격씩 이동함을 잊지말자 3. 풀이 import..
-
[프로그래머스] n^2 배열 자르기알고리즘 2023. 7. 11. 14:13
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 1. 처음에는 누구나 생각했을 방법인 1차원 배열로 만들어서 index로 [left:right+1]을 해보았다 그것도 두가지 방법으로,,, 2. 당연히 시간초과가 나서 몫과 나머지에 대한 생각을 했다. 3. index로 나누는것 중 2번째 방법에서 (행 / 열) 중 큰값이 해당 행열의 값이 된다는 생각이 떠올렸고, 몫과 나머지를 구한 다음에 큰값 + 1을 해주어서 board에..