본문 바로가기

프로그래머스25

[ 파이썬(python) ] 프로그래머스 level1 - 키패드 누르기 📌 키패드 누르기 문제 설명 💡 나의 풀이 저번에 풀었던 백준 - ZOAC 3 문제와 비슷하다는 것을 느꼈다. 하지만ZOAC 3문제에서는 택시 거리를 구했고, 키패드 누르기 문제는 같은 거리 일 때 더 가까운 손가락은 어떤 손가락인지 구해야 했다. 이 문제의 큰 흐름은 다음과 같다. 맨 처음 왼손 좌표는 *(3, 0), 오른손 좌표는 #(3, 2)로 초기화시킨다. numbers가 반목 문을 돌면서 거리를 구해야 한다. numbers의 열에 따라 왼손 좌표, 오른손 좌표를 각각 update시킨다. 만약, numbers의 column좌표가 0이면 왼손 좌표를 update시키고, column좌표가 1이면 왼손과 오른손 중 더 가까운 손 좌표를 update, 마지막으로 column좌표가 1이면 오른손 좌표를 u.. 2021. 6. 21.
[ 프로그래머스 ] 월간 코드 챌린지 시즌2 1차 대회 후기 ✏️ 서론 이 글을 작성하는 이유는 내가 취업준비를 하면서 이런 대회도 참가했었지..라고 남기고 싶어서이다. 내가 본격적으로 코딩테스트 공부를 한지 약 3개월 정도가 되었고(12월 22일 월요일부터 시작), 그동안 얼마나 공부했는지 자가진단?을 하기 위해 시험을 봤다. 처음 시작할 때 알고리즘의 ' 알 '자도 몰랐고, 내 실력으로 알고리즘 대회를 나갈 수 있는 건가?! 했는데, 대회를 나가기 위해 신청하기 버튼을 누른 게 신기했다. 시험을 보기전에는 그냥 어떤 문제 유형이 나오는지 확인만 하고, 편한 마음으로 임해야지라고 생각을 했다. 그러다가 알고리즘 오픈 채팅방에 다른 사람들이 하는 대화를 보다 어떤 사람들은 이 대회를 위해 많은 시간을 투자했다고 하는 글을 봤다. 나는 문제유형만 살펴보려고 참가했는.. 2021. 4. 18.
[ 파이썬(python) ] 프로그래머스 level1 - 소수만들기 📌 소수 만들기 문제 설명 💡 나의 풀이 풀이 방법은 다음과 같다. nums에 있는 숫자들 중 서로 다른 3개를 고른다: combination(3, nums) 각각의 combination을 모두 더한 후 소수 판별 과정을 거친다. 소수가 맞으면 cnt +=1 반복문이 끝나면 return cnt 처음에 break를 사용해야 할지, continue를 사용해야할지 헷갈렸다. 결론적으로 sum(i)를 j로 나눌 때 한 번이라도 0으로 나누어 떨어지는 값이 나오면 해당 반복문을 더 이상 실행하지 않아야 다음 sum(i)로 넘어가기 때문에 break를 사용했다. continue를 사용하면 다음 sum(i)값을 불러오는 것이 아닌, 다음 j값을 불러오게 된다. 여기서 중요한 문법은 for - else문법인데, j가 .. 2021. 4. 12.
[ 파이썬(python) ] 프로그래머스 level1 - 실패율 📌 실패율 문제 설명 💡 나의 풀이 처음 문제를 풀면서 다음과 같은 방법을 떠올렸다. 반복문이 진행될 때마다 전체 len의 값이 count만큼 줄어들어야 하므로 stages를 sort해주고 pop으로 i값을 빼주기: 실패 이중 반복문을 사용해서 첫 번째 순서를 제외한 나머지 순서는 다음과 같이 선언하기 arr.count(i) / len(arr) - 이전 count(i): 실패 이전 count로 반복문이 끝나기 전에 전체 len을 빼주기: 성공 결과적으로 3번째 방법으로 풀어서 맞았는데, 1번과 2번 방법으로 1시간 넘게 고민하다가 기운이 다 빠져버렸다. 😅 😅 또, 반례를 생각하지 않아서 1, 6, 7, 9, 13, 23, 24, 25번 테스트케이스에서 오답 판정을 받았다. 혹시라도 저 테스트케이스에서 .. 2021. 4. 12.
[ 파이썬(python) ] 프로그래머스 level1 - 비밀지도 📌 비밀지도 문제 설명 💡 나의 풀이 비밀지도 문제의 핵심은 다음과 같다. 벽 부분은 1, 공백 부분은 0으로 부호화한다. 지도 1과 2를 겹쳤을 때 어느 하나라도 벽이면 전체 지도에서도 벽이다. 출력 시 벽은 #, 공백은 ' '으로 설정하자. 각각의 배열을 이진수로 변경하고 논리 연산자 or를 사용해 겹치는 부분을 판단한다. 배열로 선언된 10진수의 값을 2진수로 바꿨다. format함수를 사용했는데 '{0:>0{1:}b}'.format(i, n)의 해석은 다음을 참고하자. {0:}, {1:}: format함수의 인자 순서 >: 오른쪽 정렬 0: 자리수만큼 정렬 후 남은 공간은 0으로 채움(미 사용 시 공백으로 채움) b: 이진수(bin) 형태로 반환 zfill함수로도 동일하게 사용할 수 있다. (bi.. 2021. 4. 7.