본문 바로가기

전체 글182

[프로그래머스 - 시저 암호][파이썬] - 8일차 https://programmers.co.kr/learn/challenges key point: chr, ord/ %26 로직 1. chr, ord 아스키 코드를 모르면 풀 수가 없다 chr() 숫자 -> 문자열 ord() 문자열 -> 숫자 2. %26 로직 ex) z에서 n=4이면 d를 출력해줘야한다. 리스트가 반복적으로 넘어가면서(?) 돌아가야함 -> 즉, n을 더했을때 가장 마지막 문자의 아스키코드보다 커질 수 있다는 점이다 그래서 %26(a~z)길이로 나눠주고, 대문자는 ord('A') 만큼의 수를, 소문자는 ord('a')만큼의 수를 더해주는 것이다 위의 예시를 그대로 가져와서, z-> 122, n=4 (122-97+4)%26=3 3+97=100 100 -> d 2022. 6. 2.
[프로그래머스 - 가장 큰 수][파이썬] - 7일차 https://programmers.co.kr/learn/challenges --시간 초과 코드 -> permutations가 모든 경우의 수를 구하기 때문에, 시간 초과가 나버렸다 -- 해결 코드 key point: 3번줄의 3배 곱하기, sort 1. *3하는 이유(구글링) 2번줄에 str형으로 바꾸고 list에 append해둬서 lambda~ 이 식이 없이 그냥 sort해도 원하는 방식대로 처리 될 것이다. [3,30,34,5,9] -> [9,5,34,30,3] 하지만 우리는 3이 30보다 앞으로 위치시켜야 한다 (0보다 큰 수가 더 높은 자리수를 차지하는게 더 큰 값이니까) 그 과정을 위해서 3배(문자열임을 인지) 2. sort [999,555,343434,303030,333]으로 키운 상태에서 .. 2022. 6. 1.
[프로그래머스 - 신규 아이디 추천][파이썬] -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.