Python

📝 문제💡 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어,카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다."네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때,입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다.다음은 카카오 아이디의 규칙입니다.아이디의 길이는 3자 이상 15자 이하여야 합니다.아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다.단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다."네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이디가규칙에 ..
📝 문제 💡 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. 두 사람이 선물을 주고받은 기록이 있다면, 이번 달까지 두 사람 사이에 더 많은 선물을 준 사람이 다음 달에 선물을 하나 받습니다. 두 사람이 선물을 주고받은 기록이 하나도 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 선물을 하나 받습니다. 선물 지수는 이번 달까지 자신이 친구들에게 준 선물의 수에서 받은 선물의 수를 뺀 값입니다. 만약 A와 B가 선물을 주고받은 적이 없거나 정확히 같은 수로 선물을 주고받았다면, 다음 달엔 B가 A에게 선물을..
📝 문제 💡 주차장의 요금표와 차량이 들어오고(입차) 나간(출차) 기록이 주어졌을 때, 차량별로 주차 요금을 계산하려고 합니다. 주차 요금을 나타내는 정수 배열 fees, 자동차의 입/출차 내역을 나타내는 문자열 배열 records가 매개변수로 주어집니다. 차량 번호가 작은 자동차부터 청구할 주차 요금을 차례대로 정수 배열에 담아서 return 하도록 solution 함수를 완성해주세요. [제한사항] fees의 길이 = 4 fees[0] = 기본 시간(분) 1 ≤ fees[0] ≤ 1,439 fees[1] = 기본 요금(원) 0 ≤ fees[1] ≤ 100,000 fees[2] = 단위 시간(분) 1 ≤ fees[2] ≤ 1,439 fees[3] = 단위 요금(원) 1 ≤ fees[3] ≤ 10,000 ..
📌 Dynamic Programming(DP) 🤔 원리 가장 대표적인 예로 피보나치 수열을 들어보자면.. 피보나치 수열을 계산할 때 재귀 함수를 사용하게 되면, 매번 f(i-2)와 f(i-1)을 호출해야 하므로, 시간을 엄청 낭비하게 된다. 이렇게 낭비되는 부분을 줄이기 위해서는 배열을 사용하여, f[i] = f[i-2] + f[i-1]와 같이 이미 계산된 이전 인덱스들을 이용한다. DP는 이처럼 배열에 각각 저장된 결과들을 재활용하여 새로운 결과를 만드는 느낌으로 접근한다. A지점까지 가는 경우의 수를 구하는 경우, A지점의 직전 지점까지 가는 경우의 수를 구해서 1을 더하는 느낌이다. 원점 좌표에서 한칸 한칸 이동해보면서 A지점까지 오는 모든 경우를 구하는 것 보다, 각 지점에서 이전 지점까지의 경우..
📝 문제 💡 문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오. 부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다. 예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, abc, abab, babc, ababc가 있고, 서로 다른것의 개수는 12개이다. ⚙️ 입력 : 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. ⚙️ 출력 : 첫째 줄에 S의 서로 다른 부분 문자열의 개수를 출력한다. 문제링크 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1..
📝 문제 💡 병든 나이트가 N × M 크기 체스판의 가장 왼쪽아래 칸에 위치해 있다. 병든 나이트는 건강한 보통 체스의 나이트와 다르게 4가지로만 움직일 수 있다. 2칸 위로, 1칸 오른쪽 1칸 위로, 2칸 오른쪽 1칸 아래로, 2칸 오른쪽 2칸 아래로, 1칸 오른쪽 병든 나이트는 여행을 시작하려고 하고, 여행을 하면서 방문한 칸의 수를 최대로 하려고 한다. 병든 나이트의 이동 횟수가 4번보다 적지 않다면, 이동 방법을 모두 한 번씩 사용해야 한다. 이동 횟수가 4번보다 적은 경우(방문한 칸이 5개 미만)에는 이동 방법에 대한 제약이 없다. 체스판의 크기가 주어졌을 때, 병든 나이트가 여행에서 방문할 수 있는 칸의 최대 개수를 구해보자. ⚙️ 입력 : 첫째 줄에 체스판의 세로 길이 N와 가로 길이 M이 ..
zzzini
'Python' 태그의 글 목록