본문 바로가기

문제 풀이262

[Python] 백준 14501번 : 퇴사 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 풀이 전형적인 DP 문제이다. DP 문제를 해결할 때에는 점화식이 중요하다. 이 문제는 점화식 자체는 단순하다. DP[i]는 i 번째 날에 최대 금액이다. 점화식은 일을 받았을 때, 일을 해결한 날의 DP 값과 받기 전 날 DP 값과 받은 일의 금액의 합을 비교해야 한다. 이 문제는 몇 가지 센스를 요구한다고 생각하는데 첫 번째는 DP 리스트의 크기이다. 최대 걸리는 기간은 5일이므로 DP는 n+5 크기를 가져야 한다. 두 번째는 상담 처리에 대한 것이다. n일에 3일이 걸리는 일을 시작했을 때, n+3일째에 새로운 일을 받을 .. 2022. 6. 21.
[Python] 프로그래머스 : 크레인 인형뽑기 게임 https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제 풀이 간단한 구현 문제였다. 이동할 곳 위에서부터 차례대로 확인한다. 0일 때는 빈 공간이므로 continue를 이용해 다음으로 넘어간다. 값이 존재할 때 공간을 빈칸으로 바꾸어주고 넘어간다. 스택의 top과 board의 값과 비교해서 지우거나 쌓아준다. 느낀 점 어렵지 않은 문제였다! 이런 구현 문제는 재밌는 것 같다. 코드 def solution(board, moves): ans.. 2022. 6. 21.
[Python] 프로그래머스 : 숫자 문자열과 영단어 https://programmers.co.kr/learn/courses/30/lessons/81301 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자 programmers.co.kr 문제 풀이 특정 영단어를 숫자로 바꾸어 주기만 하면 된다. 이때 문자열 함수 replace()를 쓰거나, re.sub()를 써도 된다. 리턴 값을 정수로 변환하면서 마무리 해준다. 느낀 점 신규 아이디 추천을 풀면서 정규식과 문자열을 좀 정리했더니 쉽게 풀었다. 코드 numbers = ['zero', 'one', 'two', 'three', 'four.. 2022. 6. 21.
[Python] 프로그래머스 : 신규 아이디 추천 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제 풀이 문제에서 요구하는대로 그대로 따라 하면 된다. 정규식을 이용해서 푸는게 깔끔해서 정규식을 이용했다. 느낀 점 파이썬의 큰 매력이 정규식에 있는 것 같다. 코드가 아주 직관적이고 예뻐졌다. 6단계에서 글자의 길이가 16 이상일 때 조건이 있는데 뭐가 되었든 처음부터 15글자를 가져오면 되니 조건을 줄여서 코드를 간략하게 바꾸었다. 파이썬이 아직 .. 2022. 6. 19.
[Python] 백준 1026번 : 보물 https://www.acmicpc.net/problem/1026 1026번: 보물 첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거 www.acmicpc.net 문제 풀이 간단한 그리디 알고리즘이었다. 두 번째 배열은 재배열하지 말라고 했지만 문제에서 요구하는 것은 단순히 더한 최솟값! 따라서 하나는 내림차순 하나는 올림차순으로 정렬해 곱한 값을 더해준 것이 최솟값이다. 느낀 점 정렬 문제 풀어보려고 했다가 빠르게 풀었다! 코드 num = int(input()) a = list(map(int, input().split())) b = list(map.. 2022. 6. 18.
[Python] 프로그래머스 : 신고 결과 받기 https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 문제 풀이 딕셔너리 result는 키와 값을 다음과 같이 가진다. key (사용자 id) : value [[신고한 유저, ], 신고받은 횟수, 받을 메일] result를 이용해 전체적인 값을 정리했고 이후 확인하는 작업만 하면된다. set의 특징을 이용해서 중복 신고를 없애서 신고들을 걸렀다. 느낀점 코딩 테스트를 대비해서 파이썬으로 시작해보았다. 아직 .. 2022. 6. 18.