문제 https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 n이 최대 10뿐이므로 완전 탐색으로 충분히 풀 수 있다. 또한 파이썬의 combinations_with_replacement를 이용하면 모든 경우의 수를 손쉽게 확인할 수 있다. 코드 from itertools import combinations_with_replacement def calcScore(enemyInfo, playerInfo): # 화살개수가 주어질 때 라이언-어피..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17687 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 입력의 범위가 크지 않으므로 문제 그대로 구현하면 되는 문제이다. 우선 총 문자열을 구하고(최대길이 t*m), 이 중에서 튜브가 말해야 하는 숫자만을 추출하면 된다. 코드 def changeNum(num, n): # 10진법의 수 num을 n진법으로 바꾸고 해당 문자열 리턴 result = "" if num == 0: return "0" while num > 0: nextChar ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17684 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 파이썬의 딕셔너리를 이용하면 쉽게 풀 수 있다. 우선 A~Z까지를 딕셔너리에 등록한다. 이후 문자열을 읽어가며 현재 문자열에 추가하면서, in 연산자로 현재 문자열이 딕셔너리(dict)에 있는지 판단하고, 있으면 해당 색인 번호를 결과값에 추가한다. 없다면 len(dict) + 1의 새로운 색인 번호를 부여하고 현재 문자열을 빈 문자열로 초기화하고 다음 문자열을 계속 읽어나간다. ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 문제 조건 그대로 구현만 하면 되는 문제이다. 캐시에 저장할 때 마지막 참조 시간을 저장하고 이 값이 적은것부터 빼면 된다. 문제의 조건으로 주어지는 캐시 크기가 작으므로 캐시에서 값을 뺄 때 O(n)이 시간이 걸려도 무방하다. 코드 def deleteLRU(arr): minValue = min(arr.values()) for e in arr.keys(): if arr[e] == ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 방법 문제 요구사항 그대로 구현만 하면 되는 문제이다. 아래 코드에서는 문자열을 변환하기 좋은 형태인 arr배열에 옮기고, 여기서 각 기회당 점수값을 scoreArr에 담는 식으로 진행하였다. 예를 들어 문자열 "1D2S3T*" → [(1, 'D', None), (2, 'S', None), (3, 'T', '*')] → [1, 4, 54] → 59점과 같은 형태로 바꾸는 식으로 코드를 ..