알고리즘(45)
-
[Programmers/Lv. 1] 실패율 (2019 KAKAO BLIND RECRUITMENT, Python)
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 실패율을 구하는 코드를 완성하라는 문제이다. 실패율은 다음과 같이 정의한다. "스테이지에 도착했으나, 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수" 전체 스테이지의 개수 N과, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열이 같이 매개변수로 주어질 때, 실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 (1) - 런타임 에러 코드 문제에 나와있는 예시..
2023.08.24 -
[Programmers/Lv. 2] 삼각 달팽이 (월간 코드 챌린지 시즌1, Python)
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 정수 n이 매개변수로 주어질 때, 그림과 같은 밑변의 길이와 높이가 n인 삼각형에 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한다. 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 구하라는 문제이다. 🤔 내가 생각한 풀이 과정 나는 아래와 같은 순서를 가지고 문제를 해결하려 했다. 값을 넣을 2차원 배열을 만든다. -> 배열에 들어가는 최댓값을 구한다.(n=4일 때 10, n=5일 때 15) -> 1부터 구한 최댓값까지 반복하면서 올바른 행, ..
2023.08.15 -
[Programmers/Lv. 1] 문자열 나누기 (프로그래머스 연습문제, Python)
📎 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 🤔 문제설명, 제한사항, 입출력 예 주어진 문자열 s를 아래 규칙에 따라서 분해하고, 분해된 문자열의 개수를 구하라는 문제이다. 문자열 s의 첫 글자를 x라고 한다. (문자열 s는 소문자로만 이루어진다.) 문자열을 읽어나가면서 x가 나온 횟수와 x가 아닌 글자가 나온 횟수를 카운트한다. 처음으로 두 횟수가 같아지는 순간 (0 제외) 이 카운트를 멈추고, 지금까지 읽은 문자열을 분리한다. 분리된 문자열을 빼고, 남은 부분에 대해서 "첫 글자를 읽고 -> 문자별 나온 횟수 카운트" 과정을 반복한다. 두 ..
2023.08.08 -
[Programmers/Lv. 0] 코딩테스트 입문 Day 25 - 시뮬레이션, 조건문, 수학 (Python)
1. 문자열 밀기 (문제 설명, 제한사항, 입출력 예) 문자열 A와 B가 주어질 때, A를 밀어서 B가 될 수 있다면, 밀어야 하는 최소 횟수를 구하라는 문제이다. 만약, 밀어서 B가 될 수 없으면 -1을 반환하면 된다. (내가 생각한 풀이 과정) 차례대로 조건을 세 개로 나누어서 문제를 풀었다. 첫 번째, A와 B가 같은 경우 -> 0을 반환 두 번째, A와 B를 한 칸씩 밀면서 두 문자열을 비교 -> shift의 숫자대로 밀면서 문자열을 "A[-shift:] + A[0:-shift]" 형태로 비교 세 번째, A의 길이만큼 밀었는데도 (한바퀴 돈 경우) 같은 값이 나오지 않는 경우 -> -1 반환 (될 수 없다고 판단) (코드) 더보기 💡 내 코드 def solution(A, B): shift = 1 ..
2023.06.07 -
[Programmers/Lv. 0] 코딩테스트 입문 Day 24 - 수학, 시뮬레이션, 문자열, 조건문, 반복문 (Python)
1. 치킨 쿠폰 (문제 설명, 제한사항, 입출력 예) 치킨 한 마리당 쿠폰을 한 장 발급해 주는 치킨집이 있다. 쿠폰을 열장 모으면 치킨을 한 마리 서비스로 받을 수 있고, 서비스로 주는 치킨에도 쿠폰을 발급해 준다. 시켜 먹은 치킨의 수가 주어질 때, 받을 수 있는 최대 서비스 치킨의 수를 구하라는 문제이다. (내가 생각한 풀이 과정) 총 서비스를 받은 치킨의 수를 저장할 정수 변수 answer를 만들어둔다. 이제 10마리를 기준으로 입력값 chicken을 계속 반복시킬 거다. 어떻게 반복할 거냐면. 1) 입력값 chicken을 10으로 나누어서 서비스로 받은 치킨의 값을 answer에 추가한다. 2) chicken에는 10으로 나누고 남은 나머지 값과 + 서비스로 받은 치킨의 값을 저장해 둔다 (서비..
2023.06.06