분류 전체보기

    [프로그래머스] 체육복 /파이썬 /Python

    💡solutions ) ✅ 체육복 현황을 보여주는 students 리스트를 만들어 놓음, 체육복 있는 경우 1 없는 경우 0으로 표시 ✅ 체육복 여분을 가지고 있는 학생이 체육복을 잃어 버린 경우 -> lost, reserve 배열에서 모두 제거 (즉, 여분의 체육복 본인이 가짐) ✅ reserve 리스트를 반복문 돌리며 여분의 체육복을 나눠줌 ✅ 인덱스 범위를 넘어가는 지 확인하는데 중복 방지를 위해 continue 달아주기 - 인덱스 1인 경우에는 2번째 학생만 체크 - 인덱스 n인 경우(끝값) n-1번째 학생만 체크 ✅ 범위 벗어나지 않은 경우에는 i 기준으로 앞의 학생 먼저 체크한 후 -> 뒤의 학생 순으로 확인하기. 중복 방지를 위해 순서대로 체크하고 continue 조건 넣어주기 🎫code )..

    [프로그래머스] 가장 큰 수/ 파이썬/ Python/ 정렬/ sort

    💡solutions ) ✅ 사용한 주요 함수는 lambda, map, sort , join이다. ✅ map 함수는 리스트의 요소를 지정된 함수로 처리해준다. 이 문제에서는 입력 받은 숫자 리스트를 각 요소별로 str 변환해주었다. sort에서 각 자릿수 별로 값을 비교하기 위해 문자열로 변환했다. ✅ sort 함수로 특정 key를 기준으로 정렬. 입력으로 주어지는 숫자가 1000 이하이기 때문에 key값으로 람다함수를 써줬다. x: x*3는 문자열에 3을 곱해주면 문자열을 3개씩 반복해서 나열한 것으로 나타냄. 값을 비교한 후 정렬한다. e.g.) 값이 5였으면 555로 값을 비교해서 정렬 ✅ join 함수는 리스트에 특정 구분자를 추가하여 문자열로 변환함. 여기서는 공백 없이 문자열로 합쳤다. ✅ 처음..

    [프로그래머스] 2016년 /파이썬 /Python

    💡solutions ) ✅ 달마다 며칠인지 리스트에 넣어주기 ✅ 전체 일수를 합산하고 7로 나눈뒤 -1 (금요일이 1이니까) 🎫code ) def solution(a, b): month = [31,29,31,30,31,30,31,31,30,31,30,31] weekday = ["FRI","SAT","SUN","MON","TUE","WED","THU"] day = sum(month[:a-1]) + b if a > 1 else b answer = weekday[day % 7-1] return answer 📌 description ) 문제출처 : https://programmers.co.kr/learn/courses/30/lessons/12901?language=python3 코딩테스트 연습 - 2016년 2..

    마이데이터(My Data) 사업 본격 시행

    신용정보법 개정으로 마이데이터 사업이 8월 5일 본격 시행됨에 따라 시중은행들의 마이데이터 초기 시장 선점 경쟁이 치열하다. 🎫 마이데이터 사업은 무엇일까? => 은행, 카드, 보험, 통신사 등에 흩어진 개인 금융거래 정보들을 일괄 수집해 금융소비자가 한눈에 볼 수 있도록 제공하고, 이를 바탕으로 고객 맞춤형 상품을 추천, 금융 상품 자문 등 수익을 창출하는 모델이다. 따라서 소비자는 한 곳에서 신용정보나 금융 상품을 보다 쉽게 관리, 통제하고 이를 신용관리나 자산관리 등 개인 생활에 능동적으로 활용하게 돼 '금융비서', '포켓금융(Pocket Finance)'으로도 불린다. 🎫 문제점은? => 일각에서는 마이데이터 사업에서 활용이 가능한 데이터가 증가함에 따라 무분별하게 사용되거나 개인정보 공유 과정에..

    [프로그래머스] 소수 찾기 /파이썬 /Python /완전탐색

    💡solutions ) ✅ itertools 모듈에서 combination을 사용하기 보다는 dfs로 직접 조합 함수를 구현했다(경우의 수들은 중복 불가) ✅ 소수는 숫자 본인과 1로만 나눌 수 있는 수 (1과 본인만 약수) ✅ 소수인지 아닌지 판변하는 방법은 2부터 시작해서 판별하기 위한 해당 숫자까지로 범위 안에 있는 숫자로 전부 나누어 보고, 나누어 떨어지는 경우가 있으면 소수가 아닌 것으로 판별할 수 있다. 즉, 나누어 떨어지는 수가 없다는 것은 해당 숫자가 소수라는 것. ✅ 함수 구현시 전역변수, 지역변수 사용하는 게 아직 헷갈린다. 🎫code ) def solution(numbers): # 아래는 주어진 숫자로 나타낼 수 있는 모든 숫자의 경우를 구하는 로직(중복불가) def dfs(word)..

    [프로그래머스] 구명보트 /파이썬 /python /탐욕법

    💡solutions ) ✅ 사람들의 무게를 담은 people 리스트를 무게를 기준으로 내림차순 정렬한다. ✅ 처음과 끝의 인덱스를 start, end로 잡아두고 while 반복문을 실행한다. ✅ 탈출을 위한 구명보트의 총 개수를 나타내는 cnt의 초기값은 전체 사람들의 수로 최대치로 잡아둔다. ✅ 처음과 끝에 있는 사람들의 무게, 다시 말하면 최소한의 무게로 2명이서 함께 탈 수 있는 경우인데, 이때 limit을 넘지 않으면 전체 보트의 개수에서 -1씩 빼준다. limit을 넘으면 혼자 타는 경우로 start의 위치만 업데이트. 🎫code ) def solution(people, limit): people.sort(reverse=True) start, end = 0, len(people)-1 cnt = ..

    [프로그래머스] H-Index /파이썬 /Python /정렬

    💡solutions ) ✅ 처음 문제를 풀고 테스트케이스 몇개를 통과하지 못해서 질문하기를 참고하며 예외 상황을 처리해주었다. ✅ 총 세 가지 예외처리를 해주었는데 ① 모든 논문의 인용 횟수가 전체 논문 개수 보다 큰 경우 -> 논문의 수 리턴 ② 모든 논문의 인용 횟수가 0인 경우 -> 0 리턴 ③ 모든 논문의 인용 횟수가 동일한 경우 -> 논문의 수 리턴 🎫code ) def solution(citations): citations.sort(reverse = True) max_v = citations[0] min_v = citations[-1] # 세 가지 예외처리 if min_v > len(citations): # 모든 논문의 인용 횟수가 전체 논문 개수 보다 큰 경우 return len(citati..

    [프로그래머스] 기능개발/파이썬/python/스택, 큐

    💡solutions ) ✅ 로직은 크게 두 파트로 나뉜다. ①남은 작업 일수를 구하기 ②일의 순서, 작업 일수를 고려해 배포 시 몇개의 기능을 배포하는 지 계산하기 ✅ 두 번째 파트에서 계속 오류가 발생했었는데, 다행히 극복. 해당 값에는 인덱스로 접근하고 처음 기준으로 잡는 인덱스를 start로 정의하고 업데이트 하며 작업 일수를 비교하는 것이 포인트 🎫code ) def solution(progresses, speeds): # 먼저 남은 작업 일수를 구해 리스트에 담는다 cnt_lst = [] for i in range(len(progresses)): # 진도율 100%에서 현재 진행된 완료율을 빼주고 tmp = (100 - progresses[i]) if (tmp % speeds[i]): # 하루 ..

    [프로그래머스] 전화번호 목록 /파이썬 /python /해시

    💡solutions ) ✅ 처음에 테스트케이스 8,9번만 통과하지 못해서 수정한 부분이 -> phone_book 리스트를 sort()로 정렬해주는 것이다. ✅ 정렬 메소드가 없는 상태에서 리스트에 1234, 123 순서로 전화번호가 들어 있다면 false를 리턴해야 하지만 true를 반환하게 되는 게 문제가 된다. 🎫code ) def solution(phone_book): phone_book.sort() for i in range(len(phone_book)): length = len(phone_book[i]) for j in range(i+1, len(phone_book)): tmp = phone_book[i] next = phone_book[j][0:length] print(tmp, next) if..

    [프로그래머스] 주식가격 /파이썬 /Python /스택

    💡solutions ) ✅ 전체 길이 total을 구하고 prices배열에 인덱스로 접근해서 그 다음에 나오는 것들(next)와 값을 비교한다 ✅ tmp 보다 큰 값이 나오면 second 초만 계산, 작은 값이 나오면 초 계산 하고 break -> result 리스트에 담아주기 🎫code ) def solution(prices): result = [] total = len(prices) for i in range(total): tmp = prices[i] for j in range(i, total): next = prices[j] if tmp

    [프로그래머스] 위장 /파이썬 /Python /해시

    💡solutions ) ✅ clothes_dic이라는 딕셔너리 만들어서 종류별로 의사 개수를 카운트 단, 의상을 선택하지 않는 경우도 있으니 맨 처음 딕셔너리에 value값을 넣을 때는 +1 키워서 2를 저장 ✅ 마지막에는 모두 안 입은 경우 하나를 빼서 return 🎫code ) def solution(clothes): clothes_dic = {} cnt = 1 for i in clothes: tmp = i[1] if clothes_dic.get(tmp): clothes_dic[tmp] += 1 else: clothes_dic[tmp] = 2 for i in clothes_dic.values(): cnt *= i return cnt - 1 📌 description ) 문제출처 : https://pro..

    [프로그래머스] 괄호변환 /파이썬 / Python /카카오블라인드

    💡solutions ) ✅ 이번 문제는 수행해야 하는 모든 과정이 나와있는 시뮬레이션 문제. 주어진 것들만 꼼꼼히 잘 챙겨서 로직을 짜면 맞출 수 있는 문제 ✅ 총 3가지 함수를 구현 ①문제에서 주어진 과정을 수행할 solution 함수 ②균형 잡힌 문자열인지 판별하여 u, v 문자열로 분리할 isBalance 함수 ③올바른 문자열인지 판별할 isRight 함수 🎫code ) def solution(p): result = "" if p == "": return p # 전체가 올바른 괄호 문자열이면 elif isRight(p) == True: return p else: # u, v로 문자열 나누기 u, v = isBalance(p) # u가 올바른 괄호 문자열이면 if isRight(u) == True: ..