본문 바로가기

알고리즘133

[프로그래머스 - 숫자 문자열과 영단어][파이썬]-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.
[알고리즘 30일 챌린지] 네이버 웹 부스트캠프에 도전해보자! 5/26~6/26 매일 프로그래머스/백준/이코테 를 기반으로 문제를 풀어보자. 당분간은 프로젝트는 멈추고 알고리즘 풀이 위주로 공부해볼 예정이다. 화이팅! 2022. 5. 25.
[백준 2503 숫자 야구][파이썬] https://www.acmicpc.net/problem/2503 정보문화진흥원 정보 영재 동아리에서 동아리 활동을 하던 영수와 민혁이는 쉬는 시간을 틈타 숫자야구 게임을 하기로 했다. 영수는 1에서 9까지의 서로 다른 숫자 세 개로 구성된 세 자리 수를 마음속으로 생각한다. (예: 324) 민혁이는 1에서 9까지의 서로 다른 숫자 세 개로 구성된 세 자리 수를 영수에게 묻는다. (예: 123) 민혁이가 말한 세 자리 수에 있는 숫자들 중 하나가 영수의 세 자리 수의 동일한 자리에 위치하면 스트라이크 한 번으로 센다. 숫자가 영수의 세 자리 수에 있긴 하나 다른 자리에 위치하면 볼 한 번으로 센다. 예) 영수가 324를 갖고 있으면 429는 1 스트라이크 1 볼이다. 241은 0 스트라이크 2 볼이다. .. 2022. 5. 23.