알고리즘/프로그래머스 29

[프로그래머스 | Lv3] 퍼즐 조각 채우기 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/84021 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 전체 로직 1. table -> 이어진 퍼즐 조각 부분만 잘라서 행렬로 만들어주고 board에 추가 2. game_board -> 이어진 빈 부분만 잘라서 행렬로 만들어주고 rotate하면서 각 수행문마다 board에 같은 값이 있는지 찾고 정답 추가 bfs(x, y, t, f, array, size) - 큐에 [x, y]를 넣고 이어진 부분을 찾는다. - table은 1을 찾아야 하고, game..

[프로그래머스 | Lv2] 조이스틱 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/42860 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 상하이동 더하기 (A-Z) - 아스키코드를 이용해 앞에서부터 더한 것과 뒤에서부터 더한 것 중 최솟값을 찾아준다. 2. 좌우이동의 최소 구하기 1) 'A'가 연속해서 나오는 위치를 찾아준다. - temp 리스트를 만들어서 연속된 인덱스들을 리스트로 묶어서 넣어줬다. 2) 기존 방식(앞으로 쭉 가기) / 앞으로 갔다가 뒤로 돌아가기 / 뒤로 갔다가 앞으로 돌아가기 중 최솟값 - 기존 방식(앞으..

[프로그래머스 | Lv3] 등굣길 (Python)

https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 0으로 초기화된 dp 배열을 만들어주고, 집이 있는 자리는 1로 만들어준다. 그 후 1행 -> 2행 -> ... 으로 반복문을 돌면서 (오른쪽, 아래쪽으로만 가기 때문에 옆으로 건너가면서 모든 경우의 수를 계산할 수 있다.) [x-1][y], [x][y-1]의 배열을 합한 값을 더해주면 된다. # 프로그래머스 42898: 등굣길 def solution(m, n, puddles): dp = [[0]..

[프로그래머스 | Lv2] 문자열 압축 (Python) - 2020 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/60057 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문자열 길이의 절반보다 큰 수로 문자열을 자르면 문자열 압축이 불가능하기 때문에 1부터 문자열 길이의 절반만 탐색한다. ==> 압축하는 문자열의 길이 (처음에 len(s)//2+1로 범위를 잡아줬다가 tc5에서 실패했다. 문자열의 길이가 1일 경우를 고려하여 +2를 해준다.) cnt(같은 문자열의 개수), result(압축된 문자열), temp(비교 문자열) 변수를 뒀다. i(압축하는 문자열의 길..

[프로그래머스 | Lv2] 괄호 변환 (Python) - 2020 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/60058 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 빈 문자열일 때 그대로 반환한다. 2. '('와 ')'가 같은 개수만큼 있으면 잘라서 u, v로 분리한다. (균형잡힌 괄호 문자열) 3. u를 복사한 리스트(tmp)를 생성해서 '()'를 빈 문자열로 교체해준다. 4. u가 올바른 괄호 문자열(tmp == '')이면 v를 재귀적으로 수행한 후 u + 재귀결과 붙여서 반환한다. 5. u가 올바른 괄호 문자열이 아니면 v를 재귀적으로 수행한 후 ..

[프로그래머스 | Lv2] 수식 최대화 (Python) - 2020 카카오 인턴십

https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 숫자(num), 연산자(op)를 분리해주고 연산자 우선순위 리스트(per)를 순열을 통해 만들어준다. per을 순서대로 돌면서 각 연산자에 대해 계산을 해주고, (연산자의 개수는 항상 숫자의 개수보다 하나 적음, 연산자의 idx -> 숫자[idx]와 숫자[idx+1]의 연산을 수행하면 됨) 각 우선순위에 따라 절댓값의 최댓값을 갱신해주면 된다. # 프로그래머스 67257: 수식 최대화 (2020 ..

[프로그래머스 | Lv2] 순위 검색 (Python) - 2021 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/72412 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 각 info에 대해 탐색될 수 있는 모든 경우의 수를 만들어준다. 예를 들어 [java, backend, junior, pizza]의 선택을 가진 사람이 있다면, [java, backend, junior, pizza], [-, backend, junior, pizza], [java, -, junior, pizza], ... [-, -, -, -] 👆위의 모든 경우를 만들어주는 것이다. 그 후 qu..

[프로그래머스 | Lv2] 메뉴 리뉴얼 (Python) - 2021 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr orders에서 중복을 포함하지 않는 조합으로 course에 해당하는 수만큼의 문자열을 뽑아낸다. 파이썬에서 조합을 이용하면 원소를 튜플로 반환하기 때문에 이를 리스트로 변환 후 정렬해주고 문자열로 변환한다. 그리고 result 딕셔너리에 {"문자열" : 해당 문자열이 나온 개수}로 저장해줬다. result를 돌면서 최댓값을 뽑아낸다. 먼저 2명 이상의 손님에게서 주문이 들어온 건만 포함해야 하며..

[프로그래머스 | Lv2] 거리두기 확인하기 (Python) - 2021 카카오 채용연계형 인턴십

https://school.programmers.co.kr/learn/courses/30/lessons/81302 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 대기실은 5개이고, 5*5 크기로 고정된 사이즈로 주어졌기 때문에 구현이 까다롭지 않은 문제였다. 응시자들끼리는 맨해튼 거리가 2 이하로 앉지 말아야 하는데, 그 사이에 파티션이 존재하는 경우 앉을 수 있다. 입력된 배열을 대기실 별로 나누어 bfs를 수행했다. 먼저 P인 곳의 좌표를 모두 큐에 넣는다. 큐에서 하나씩 빼서 상하좌우를 돌면서 P인 곳이 존재하면 0을 리턴하고, (자리 사이가 맨해튼..

[프로그래머스 | Lv2] 양궁대회 (Python) - 2022 KAKAO BLIND RECRUITMENT

https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr BFS를 이용하여 풀었다. 화살을 쏠 수 있는 경우 (남은 화살이 존재) 10점부터 차례대로 화살을 쏜다. 쏠 수 있는 화살은 어피치보다 1발 더 쏘기 or 0발 쏘기이다. deque에 쏠 수 있는 화살 리스트를 모두 갱신하여 저장한다. 더이상 쏠 화살이 없는 경우 10~1점까지 모든 화살을 다 쐈고, 남은 화살이 존재할 경우 0점에 남은 화살을 몰아준다. 라이언과 어피치의 점수를 계산하여 둘의 ..