반응형

프로그래머스 15

[Python][프로그래머스] level 2 - 땅따먹기

문제 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr 풀이과정 연속으로 놓여있는 수는 지날수 없기 때문에 하나의 행에서 선택할 수 있는 수는 가장 큰 수, 두번째로 큰 수로 두가지밖에 없습니다. 그렇게 때문에 아래와 같은 방식으로 최댓값을 구할 수 있습니다. 1. 행에서 가장 큰수 maxNum, 두번째로 큰 수 secondMaxNum 를 구합니다. 2. n-1 행의 maxNum 의 인덱스를 maxIdx, secondMaxNum 의 인덱스를 secondMaxIdx 라고 할때, n행에서 max..

[Python][프로그래머스] level 2 - 순위 검색 (딕셔너리, 이진탐색)

문제 0) queryScore = int(tempArr[-1]) 해당 key 가 딕셔너리에 값이 있는지, 있다면 query 에 있는 점수보다 크거나 같은 점수는 몇개가 있는지 계산하기만 하면 됩니다. 하지만 만약 하나의 쿼리에 속한 점수들의 배열이 너무 길어서 검색하는 시간이 길어져 시간초과 날수도 있습니다. 이를 해결하기위해 이분탐색을 사용할 예정이므로 미리 value 들을 정렬해둡니다. for key in infoDict.keys(): infoDict[key].sort() 그리고 lower_bound 를 계산해주는 bisect_left 를 통해 query 내의 점수보다 점수가 높은 개수를 계산하여 출력하면 됩니다. answer = [] for x in query: tempArr = list(y for..

JetBrains x 프로그래머스 월간 코드 챌린지 시즌3 9월/10월후기

"프로그래머스 월간 코드 챌린지"는 프로그래머스 사이트에서 1년에 한 두번 진행하는 알고리즘 대회입니다! 아래 링크에서 간단한 인적사항을 적으면 바로 시험이 신청할 수 있었습니다. "20세 이상의 코딩이 재미있는 분이라면 누구나 & 한국거주자"가 참가대상이기 때문에 저는 바로 신청했죠 ㅎㅎ JetBrains x 프로그래머스 월간 코드 챌린지 시즌3 접수 21년 08월 23일 11:00 ~ 10월 07일 18:00 테스트 21년 09월 09일 19:30 ~ 10월 07일 22:30 programmers.co.kr 시험은 4문제 180분이고 C#, C++, Java, JavaScript, Python3, Kotlin를 사용할 수 있습니다. 이벤트는 9월 10월 대회의 총 8문제중에서 4문제 이상 풀면 이벤트..

2021 그렙(프로그래머스) 채용 챌린지 코딩테스트 후기

모집 일정 코딩테스트는 프로그래머스에서 진행하며 접수를 한 모든 사람들에게 코딩테스트를 볼 수 있는 기회가 주어집니다! 그리고 코딩테스트에 합격한 인원만 서류를 제출하는 방식으로 선발한다고 합니다! 이번 그렙 채용은 다른 회사와 다른점이 있습니다. 바로 "Dev-Matching/월간코드챌린지 스킬체크로 대체 가능" 하다는 문구입니다! 이는 챌린지에 참여한 경험이 있다면 그 점수로 대체 가능하다는 의미로 본인이 챌린지에서 만족스러운 결과를 얻었던 경험이 있다면 시험을 보지 않아도 되겠죠? ㅎㅎ 하지만 모든 분야가 위의 챌린지들로 대체 가능한것은 아니니 아래 사진을 통해 자세한 일정과 내용을 참고하시기 바랍니다! (https://programmers.co.kr/competitions/1586?slug=202..

[Python][프로그래머스] level 3 - 보석쇼핑

문제 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr [본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 개발자 출신으로 세계 최고의 갑부가 된 어피치는 스트레스를 받을 때면 이를 풀기 위해 오프라인 매장에 쇼핑을 하러 가곤 합니다. 어피치는 쇼핑을 할 때면 매장 진열대의 특정 범위의 물건들을 모두 싹쓸이 구매하는 습관이 있습니다. 어느 날 스트레스를 풀기 위해 보석 매장에 쇼핑을 하러 간 어피치는 이전처럼 진열대의 특정 범위의 보석을 모두 구매하되 특별히 아래 목적을 달성하고 싶었습니다. 진열된 모든 종류의 보석을 적어도 1개 이상 포함하는..

[Python][프로그래머스] level 1 - 실패율

문제 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 전체 스테이지의 개수 N, 게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages가 매개변수로 ..

[Python][프로그래머스] level 1 - 문자열 내 마음대로 정렬하기

문제 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 strings n return ["sun", "bed"..

[Python][프로그래머스] level 1 - 키패드 누르기

🍋 문제 https://programmers.co.kr/learn/courses/30/lessons/67256?language=python3 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손..

코딩테스트(알고리즘) 준비/공부 사이트 추천

안녕하세요! daily_D 입니다! 오늘은 개발자가 되기위해서는 필수로 통과해야하는 관문인 코딩테스트를 준비할 수 있는 사이트를 추천드리려고 합니다! 다같이 열심히 공부하고 원하는 기업에 취업하시길 바랍니다 (ง •̀_•́)ง 아자아자 SW expert academy (삼성) https://swexpertacademy.com/main/code/problem/problemList.do SW Expert Academy 사이트는 삼성에서 직접 만들어 코딩연습을 할 수 있는 사이트로 난이도별 / 알고리즘별 분류를 통해 자신의 약점을 중점적으로 연습해 볼 수 있습니다. 또한 수시로 열리는 contest problem 도 참가할 수 있고 삼성전자 코딩테스트를 보지않고 바로 통과가 가능한 상시 sw역량테스트 신청 또..

[Python][프로그래머스] Level 3 - 순위(그래프)

🍋 문제링크 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 🍓 문제풀이 해당 문제는 BFS와 visited 를 사용해서 풀었습니다. 일단은, 매개변수로 들어오는 results 는 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 으로 보기 쉽지 않게 저장되어있기 때문에 아래와 같이 i 가 j 를 이겼다면 win의 의미로 arr[i][j] = 'w' i 가 j 에게 졌다면 lose 의 의미로 arr[i][j] = 'l' 아무 승패관계가 없는 칸은 nothing의 의미로 arr[i][j] = 'n'으로 2차원 배열 새롭게 저장하였습니다. 그 후 arr[i][j] 를 돌면서 각 칸이 자기 자신과의..