본문 바로가기

전체 글182

[프로그래머스- 없는 숫자 더하기][파이썬] -4일차 https://programmers.co.kr/learn/challenges --풀이 쉬운 문제! 2022. 5. 29.
[프로그래머스 - 실패율][파이썬]-4일차 https://programmers.co.kr/learn/challenges 처참히 실패한 코드... 너무 과도한 for문과 보이는대로 하나하나 코딩한 느낌이 너무 난다..... --정답 코드(구글링) 다른 분들은 어떻게 코드를 풀어가나 구글링 해보았다. dictionary 자료 구조, lambda, 하나의 for문으로 유저수를 count 하고 실패율 계산 1. dictionray 자료 구조 나는 리스트 형태로 풀어야 했기 때문에, count리스트도 만들고, 사람수 리스트도 만들어서 나누어줘야 했다 dict형태로 풀면, key 값에 단계, value에 실패율을 매칭해서 더 간결하게 풀 수 있었다. 리스트로 했다면 런타임 오류가 분명히 났을 것. -> 각각의 값과 인덱스가 매칭되어야 할 때 dict 구조를.. 2022. 5. 29.
[프로그래머스 - 숫자 문자열과 영단어][파이썬]-3일차 https://programmers.co.kr/learn/challenges --시간초과 코드(오답) 거추장스러운 접근이었던 것 같다 시간초과가 나서 다시 생각해봤는데 replace 함수를 사용하면 됐다 --정답 + dictionary 사용법 dic.itmes() -> dict_items([('zero', 0), ('one', 1), ('two', 2), ('three', 3), ('four', 4), ('five', 5), ('six', 6), ('seven', 7), ('eight', 8), ('nine', 9)]) dic.keys()/values 동일 -> dict_keys(['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight.. 2022. 5. 28.
[프로그래머스- 2016년][파이썬] -3일차 https://programmers.co.kr/learn/challenges --풀이 너무 직관적인 코드인것지만, 월별로 며칠이 있는지 리스트로 계산하고 2월 1일 -> 1월 32일로 계산하고 나머지를 통해서 답을 냈다 주의 할 점 -> %7==7이 아니라 0이어야 한다! 2022. 5. 28.
[프로그래머스- 폰켓몬][파이썬] -3일차 https://programmers.co.kr/learn/challenges (문제 본문) -- 풀이 고민이 많이 되었던 문제였다. 먼저 itertolls permutations 을 이용했는데 시간 초과도 났고, 튜플 하나하나를 돌면서 count를 하기 어려웠다. 그래서 set을 떠올렸고, [3,1,2,3]에서 3은 같은 포켓몬이기 때문에, 종류에는 상관이 없었다. set으로 중복을 지웠다. -> if 중복 없는 리스트 >= 최대 뽑을 수 있는 수: answer= 최대 뽑을 수 있는 수 ex) 중복 없는 리스트 길이가 3이고, 최대 뽑을 수 있는 수가 2 라면, 서로 다른 3개 중에 2개를 뽑는 case elif 중복 없는 리스트 < 최대 뽑을 수 있는 수: ex) 중복 없는 리스트 길이가 2이고, 최대.. 2022. 5. 28.
[프로그래머스- 부족한 금액 계산하기][파이썬]- 2일차 https://programmers.co.kr/learn/challenges 쉬운 문제였다 range 범위를 1부터 count+1 까지로 설정하는 것, 그리고 if money- cost>0 이 조건을 빼먹으면 4번에서 오류가 날 것, 화이팅..! 2022. 5. 28.
[프로그래머스 - 로또의 최고 순위와 최저 순위][파이썬] -2일차 1단계 풀만했음 처음에 21~28의 if 문을 작성하지 않았을때, 순위 오류가 생겼고, 순위 오류를 제거하기 위해 worst 케이스만 if 문을 작성해주었더니, 14번 케이스가 solve가 안되었다. 생각해보니 최소한 하나의 번호는 맞을 것이라고 생각했는데, 하나도 안 맞았을 때 [6,6]이 나오는 케이스를 풀어야 했다. 그래서 if 문을 하나 더 작성하여 해결했다. 사실 너무 길고 더럽게 코딩한 것 같아서 다른 분들의 코드를 찾아봤다 (new를 설정할 필요도 없고, 불필요한 remove for문도 있는 기분이었다. 타임 에러가 안난게 천만 다행,,,,) --모범 코드 0의 개수와 count 를 활용해서 참... 가볍게 풀었다 2022. 5. 27.
[프로그래머스 -체육복][파이썬] -2일차 https://programmers.co.kr/learn/challenges --풀이 그리디 알고리즘, 1단계 얼핏 보면 쉬워보이지만, 중복이 없고, 여벌의 체육복이 있는 학생도 도난 당했을 수 있다 라는 조건이 변수였다 이 부분을 새로운 리스트를 만들어서 해야하나 고민했지만, 다른 분들의 코드를 참조해 set을 사용해서 차집합 개념으로 중복된 수를 제거할 수 있었다. -> 이러면 리스트 자체의 길이도 저절로 바뀌기에 간편한 것 같다 (set 자료형: 집합 자료형. set끼리 집합 연산을 할 수 있음) index out of range 오류를 2번 정도 만났지만, range를 벗어날때는 len, range()로 접근하기 보다는 숫자가 위치를 뜻하기 때문에 숫자 자체에 접근하고, i=1일 때 i-1은 0인.. 2022. 5. 27.
[프로그래머스- 크레인 인형뽑기 게임][파이썬]-2일차 문제원본은 프로그래머스에서 참조하세요! https://programmers.co.kr/learn/challenges --풀이 1. 문제에서의 포인트는 뽑은 인형들이 똑같을 때 삭제해주는 것이었다고 생각한다. 삭제하지 않고 순순히 뽑히게 될 리스트를 보면, 4,3,1,1,3,2,4 가 되는데, 1 1 을 삭제하고 나면 4,3,3,2,4 가 되어서, 3,3 도 삭제해줘야되기 때문이다. -> 그렇기에 따로 while 문으로 picked 리스트를 다루기 보단, 더하는 과정에서 더하다가 같네? 그럼 삭제해야지! 라는 로직으로 접근했다 2. picked 리스트가 비어 있고 처음 수를 넣을 때는 비교할 수 있는 로직을 생각해보다가, (더해진 값의 -1 index와 비교가 불가능하니까) 뒤에서부터 비교하는 방법을 생각.. 2022. 5. 27.
[프로그래머스- 음양 더하기][파이썬]-1일차 프로그래머스 1단계 음양 더하기(문제는 프로그래머스 사이트에 있다) --실패 코드 로직은 맞지만 시간 초과에 걸림 (너무 쉽다 했다...) --다시 풀이(정답 코드) 굳이 음수로 변경하지 않고 합에서 그 수를 빼주는 로직으로 접근하여 풀이 2022. 5. 26.
[프로그래머스- k번째수][파이썬] - 1일차 프로그래머스 1단계 k번째 수(문제는 프로그래머스 사이트에 있다) --풀이 코드레벨 1 --포인트 2차원 리스트 안의 3개의 수들을 int로 처리하는 것 array를 슬라이싱 할때 index 번호를 -1씩 하여 고려하는 것 비교적 쉬운 문제였다! 2022. 5. 26.
[프로그래머스- 신고 결과 받기][파이썬] -1일차 프로그래머스 1단계 신고 결과 받기(문제는 프로그래머스 사이트에 있다) 1. 실패 코드 1- 중복된 케이스 제거 2- 공백 기준으로 뒷 문자열을 분류해서 각각의 id_list에 count를 하나씩 올림 3- k에 넘는 case 들을 찾아서 4- 이 case들의 신고자들의 count을 올리려 했지만 실패.. 2. 해결방안 dictionary 자료구조를 사용해야함 구현에 성공했어도, 시간초과가 났을 것 3. 다른 블로그를 참조하여 새로운 코드 작성 는 몇가지 케이스에서 시간초과로 오류... 4. 열심히 구글링 하여 찾은 최종 코드 defaultdict 를 사용해서 report_dic={}~ 이 코드를 간소화하고 나머지 로직은 비슷하다 다양한 자료구조를 다뤄보자 2022. 5. 26.