본문 바로가기

알고리즘133

[프로그래머스 - 신규 아이디 추천][파이썬] -7일차 https://programmers.co.kr/learn/challenges --풀이 key point: 조건들이 생각보다 까다로웠는데 문제에서 1~7단계까지 부여를 해서 다행인 것 같다 1단계: 문자열 자체에 문자열.lower() 로 모두 소문자로 치환이 가능하다 2단계: str.isalnum -> 문자열이 알파벳([a-zA-Z])과 숫자([0-9])로만 구성되었는지 확인하는 파이썬 문자열 메소드 3단계: 불필요하게 for 문으로 풀려고 했는데, 문자열 자체에 while '찾고자 하는 문자열' in '전체 문자열' 이 가능했고, while 조건에 걸렸을 때 replace method를 사용해서 치환해주었다. 3개 이상인 경우도 처리가 가능하다 ex) .... 앞에 있는 ..이 먼저 걸려서 ... 으로 .. 2022. 6. 1.
[프로그래머스 - [1차] 다트 게임][파이썬] -6일차 https://programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr --풀이 완전 탐색 문제, key point: '*'을 처리하는 방법, S,D,T 처리 방법 1. S, D, T 처리 로직 S,D,T는 숫자 뒤에 나오기 때문에, if 숫자면 더해줬던 n을 1제곱, 2제곱, 3제곱해주면 된다 n=''을 사용한 이유: 문자열과 숫자를 다르게 생각해줘야하는데, 앞에 있는 숫자를 다루기 편하라고, 문자와 가장 가까운 인덱스에 있는 숫자를 담아 둔 것이다 -> 그래서 처리 후에는 n=''로 초기화 해줘야함 2. '*' 처리 방법 먼저 *이 처음에 올수도 있다는 조건을 봤을 때, 인덱스로 접근하려고 해서 고생.. 2022. 5. 31.
[프로그래머스 - 소수 만들기][파이썬] -6일차 https://programmers.co.kr/learn/challenges --풀이 key point: combinations, 소수 구하기 로직 1. combinations( 순서 고려 x 인자의 중복 x) itertools 에는 combinations, permutations 를 자주 사용하는데, -- combinations -> 중복을 허용하지 x [1,2,3,4] ->[1,2,3], [1,2,4], [1,3,4] [2,3,4] 2. permutations (순서 고려 o 인자의 중복 x) [1,2,3,4] ->[(1, 2, 3), (1, 2, 4), (1, 3, 2), (1, 3, 4), (1, 4, 2), (1, 4, 3), (2, 1, 3), (2, 1, 4), (2, 3, 1), (2, 3.. 2022. 5. 31.
[프로그래머스 -하샤드 수][파이썬]-6일차 https://programmers.co.kr/learn/challenges --풀이 key point: data=~~~ 1. list(str(x)) -> int형으로 받은 x를 str형으로 바꾸고 list에 넣으면 12-> ['1','2'] 이런 식으로 찢어짐 2.list(map(int, 1번)) -> ['1','2']로 찢어진 str형을 map으로 int형으로 바꿔주고 리스트로 감싸준다 3. sum(2번) -> 자리수의 합을 구해준다 2022. 5. 31.
[프로그래머스 -콜라츠 추측][파이썬]-6일차 https://programmers.co.kr/learn/challenges --풀이 1. range나 인덱스가 주어지지 않았기 때문에, while True:로 무한 반복을 돌렸다. (특정 조건이 나오면 break로 끊어준다는 생각을 하자!) 2. if count>500 if문을 num이 짝홀임을 구별하는 if문과 동등한 위치(즉 while 문이 한번은 num을 판단, 한번은 count가 몇인지 판단) 로 두어야 정확한 로직이 완성된다! 2022. 5. 31.
[프로그래머스 -완주하지 못한 선수][파이썬]-5일차 https://programmers.co.kr/learn/challenges --내 코드 원래는 리스트.remove를 썼는데 remove는 메모리가 클 수 있다고 하기에 del로 바꿨는데도, 효율성 테스트를 통과하지 못했다(케이스는 모두 통과) --구글링 후 key point: zip, if문, pop 1. zip -> [(1, 'q'), (2, 'w'), (3, 'e'), (4, 'r')] 각각의 같은 인덱스끼리 매칭 시켜준다고 생각하기 (list 없으면 zip object로 나옴 -> map과 같은 맥락) -> 1 q 2 w 3 e 4 r 문제에서의 쓰임은 첨부한 그림에서도 볼 수 있는것처럼, sort를 하고 처음부터 하나하나씩 비교하면서, 출발한 사람중에 도착한 사람이 있나? 를 비교하는 것이다 1.. 2022. 5. 30.
[프로그래머스 -최소직사각형][파이썬]-5일차 https://programmers.co.kr/learn/challenges --풀이 --설명 먼저 단순해보였던 문제지만, 가장 큰 값들만 고려하는 문제이기 때문고, 인덱스가 다행히 2개밖에 없기 때문에, 한 인덱스에 가장 큰 값을 몰아넣고, 다음 인덱스에는 작은 값을 몰아두자! 라는 생각으로 문제를 풀었다 가장 큰 값이 있는 인덱스 쪽에는 모두 큰 값을 넣고, 다른 쪽에는 작은 값을 두면, 작은 값들만 한쪽으로 몰리겠다고 생각했다. 어차피 가장 큰 값이 있는 인덱스 번호에는 그 다음으로 큰 값들이 와도 필요가 없기 때문! 하지만, 코드가 너무 번잡하고 리스트를 몇개 만드는게 마음에 들지 않는다. --참고 코드(https://velog.io/@guswl8280/%ED%94%84%EB%A1%9C%EA%B7.. 2022. 5. 30.
[프로그래머스 -예산][파이썬]-5일차 https://programmers.co.kr/learn/challenges --풀이 key point: d.sort(), if budget-i>=0 1. d.sort() 대부분의 그리디 알고리즘이 그렇듯, 최대한 많이 ~~ 라는 조건이 나오면 작은 수부터 접근하는 것이 좋다. 마치 가장 많은 물건을 담으려면 가장 가벼운 물건들로 소위 '양치기'를 생각하면 편하다 2. if budget-i>=0 budget>0 으로 하면 예산초과가 생길 수 있기 때문에, 이 팀에 예산을 주고도 예산이 0이상일 경우를 판단해줘야한다 2022. 5. 30.
[프로그래머스- 모의고사][파이썬] -4일차 https://programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr --풀이 1. for문에서 len(answers)로 range 돌린 이유 직접 i in answers로 돌리게 되면, answers와 player들의 길이가 다를 경우, indexing이 어려워진다 0번부터 시작하는 i를 통해 answers에는 answers[i]번 인덱스로 첫 수부터 접근, 각각의 플레이어들의 첫 인덱스부터 접근할 수 있기 때문 2. len(player_x) 생각보다 나머지를 구하는 과정에서 멘붕이 올 뻔 했다. 0%5 = 0이라는 걸 생각하지 못했던 바보 같은 상황 ex) answers=[1,3,2,4,5,1,3,.. 2022. 5. 29.
[프로그래머스- 내적][파이썬] -4일차 https://programmers.co.kr/learn/challenges --풀이 easy! 2022. 5. 29.
[프로그래머스- 없는 숫자 더하기][파이썬] -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.