본문 바로가기

반응형

코딩

(20)
[파이썬] 마법의 엘리베이터 - 프로그래머스 코딩테스트 연습 마법의 돌을 아끼기 위해 민수는 항상 최소한의 버튼을 눌러서 이동하려고 합니다. 1부터 예를 들어봅시다. 1층에 있다면 -1을 1만큼 사용합니다. 2층에 있다면 -1을 2만큼 사용합니다. 3층에 있다면 -1을 3만큼 사용합니다. 4층에 있다면 -1을 4만큼 사용합니다. 5층에 있다면 -1을 5만큼 사용합니다. 6층에 있다면 1을 4만큼 사용하여 10층으로 간 뒤 -10을 하나 사용하여 총 5번만 사용할 수 있습니다. 7층에 있다면 1을 3만큼 사용하여 10층으로 간 뒤 -10을 1만큼 사용하여 총 4번만 사용할 수 있습니다. 같은 이유로, 8층은 3번, 9층은 2번만 사용하면 됩니다. 10층에 있는 경우 -10을 한 번만 사용합니다. 11부터 14까지는 -10 한 번과 -1을 각각 해당하는 수만큼 사용하..
[파이썬] 코딩테스트 연습 - 성격 유형 검사하기 저는 가끔 모르겠는 문제는 그저 노가다를 합니다... '하나도 빠트리지 않고 중복되지 않게' 마치 고등학생 때 확률과 통계를 배울 때 들었던 것처럼, 뭔가를 곱할 지 더할 지 모르면 기본은 하나하나 세는 것이라며 '하나도 빠뜨리지 않고 중복되지 않게' 세면 된다는 정신을 이어받아서 그냥 해버릴 때도 있습니다. 이번 문제가 바로 그런 문제였던 것 같습니다. 그런 만큼 if elif else가 정말 많네요. 문제에서 어떤 상황에서 어떻게 항목이 더해지는 지 이미 알고 계실 거라는 가정하에 코드 작성에 어려움을 갖고 계신 분이 계실까봐 코드만 남겨놓고 갑니다. def solution(survey, choices): answer = '' d = dict() for j in ['R', 'T', 'C', 'F', ..
[파이썬] 코딩테스트 연습 - 개인정보 수집 유효 기간 이번 문제는 파이썬 라이브러리를 임포트해서 사용하면 편한 문제였습니다. datetime 라이브러리를 자주 사용할 일이 없어서 처음에 조금 어려웠지만, datetime, dateutil 라이브러리의 사용법을 이용해서 날짜 및 시간 계산을 쉽게 할 수 있었습니다. 파이썬이기 때문에 정답률이 낮은 편인데도 쉽게 해결할 수 있었던 것 같아요 import time import datetime from dateutil.relativedelta import relativedelta def solution(today, terms, privacies): months = 0 date = '' answer = [] today = today.replace('.', '-') # today가 2019.01.01라면 replace..
[파이썬] 코딩테스트 연습 - 신고 결과 받기 문제는 이미 여러분이 충분히 보고 오셨을 거라고 생각합니다. 문제 설명에서 문제 풀이에 중요한 조건만 먼저 설명한 뒤에 코드를 풀이하겠습니다. - 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. : 신고 횟수에 제한은 없습니다. : 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. - k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. : 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. - report의 원소는 "이용자id 신고한id" 형태의 문자열입니다. 예를 들어 "muzi frodo"의 경우 "muzi"가 "frodo"를 신고..
프로그래머스 AI 종합 분석 결과(feat. [파이썬] 바탕화면 정리 - 코딩테스트 연습) 어... 초심자 치고 나름 잘 풀고 있다고 생각했는데 종합점수 39.7점....? 고등학생 때 처음 수학 시험 보고 나서 놀랐던 기분을 다시 느끼게 될 줄이야.... 자료구조, 탐색, 정렬이 부족하다고 큐, 트리, 이분탐색을 추천해줬다. 그렇구나! 50점이 넘는 것이 없구나! 알겠다. 풀어보겠다. 바탕화면 정리라는 문제를 추천해줬습니다. 최소한의 영역만 선택되는 좌표를 리턴해주라는 말 같네요. 파이썬으로 풀어보겠습니다 def solution(wallpaper): answer = [] for i in range(len(wallpaper)): for j in range(len(wallpaper[i])): if wallpaper[i][j] == '#': # (앞에 있는 '#'은 주석을 달기 위해 사용한 '#'..
프로그래머스 AI 리포트 분석을 분석해보자 내가 해결한 문제들이 대부분 어떤 문제였는 지 알아보고 싶어서 들어가봤다. 아니... 해결 못한 문제들 위주로 알려주네? 심지어 종합 점수가 하위에 아주 가까운 중위에 걸쳐져 있네? 다음 업데이트까지 5문제 남음??? 어떤 게 정렬 문제인지 알아야 정렬 문제를 풀죠 저는 여기서 문제를 풀 때 그냥 정답률 높은 순으로 정렬시키고 파이썬만 풀거든요 그래서 뭐가 정렬 문제인지 모릅니다 근데 ai가 예측하기를 정렬 문제 잘 풀 것 같다고 함.. 나 문제해결력 정렬에서 부족하다며... 일단 다섯 문제를 더 풀면 보고서를 업데이트 해준다니까 더 풀어보자.
[파이썬] 코딩테스트 연습 - 옹알이 (1), 옹알이 (2) 코드 해설 여러분 그거 아십니까? 옹알이 (2)의 코드를 옹알이 (1) 문제에 제출해도 통과가 되는데 그 반대는 안됩니다. 아래는 일단 옹알이 (1)의 문제 코드에요 각 문자열에서 단어는 각각 최대 한 번씩만 등장하는 것으로 주어지며, 네 가지 단어를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없도록 코드를 작성하는 것이 옹알이 (1) 문제의 포인트였다. #옹알이(1) def solution(babbling): answer = 0 for i in babbling: j = 0 while j < len(i): if i[j:j+2] == 'ye' or i[j:j+2] == 'ma': j += 2 if j == len(i) or i[j:j+2] == 'ye' or i[j:j+2] == 'ma'\ or i[j:j..
코딩테스트 연습 [카카오 인턴] 키패드 누르기 파이썬 입출력 예를 보면서 써야하는 변수를 생각하는데 힌트를 얻었다. 그래서 왼손의 위치, 오른손의 위치, 다음에 누를 것을 변수로, 그리고 각 번호마다 다른 번호들과의 거리를 구해서 딕셔너리를 만들어놨다. def solution(numbers, hand): answer = '' hand = hand[0].upper() l='*' r='#' two = {1:1, 3:1, 5:1, 4:2, 6:2, 8:2, 0:3, 7:3, 9:3, '*':4, '#':4} five = {2:1, 4:1, 6:1, 8:1, 1:2, 3:2, 7:2, 9:2, 0:2, '*':3, '#':3} eight = {5:1, 7:1, 9:1, 0:1, 2:2, 4:2, 6:2, '*':2, '#':2, 1:3, 3:3} zero = {'..

반응형