본문 바로가기

코딩테스트

[프로그래머스(Programmers)/Level2](Python) 최솟값 구하기 A리스트는 내림차순 정렬, B리스트는 오름차순정렬을 하여 각 원소들을 곱하며 더한게 정답. 각 배열에서k번째 숫자를 뽑았다면 다음에 k번째 숫자를 다시 뽑을수 없습니다.를 같은열의 숫자는 쓸수없다->정렬은 안된다. 로 생각하고 풀어서 계속 오답이 나오고 생각이 엉켜서 오래 걸렸다. 문제를 잘 읽는 습관을 길러야겠다.!!!!반드시!!!!!!!!!!!!!!!!!!1 더보기
[프로그래머스(Programmers)/Level2](Python) 최댓값과 최솟값 입력받은 문자열을 리스트에 정수형으로 저장하고, 그 리스트에서 최소,최대값을 뽑아 문자열로 연결해준다. 추천을 제일많이 받은 풀이와 내풀이가 완전히 똑같아서 기분이 좋았다. 파이썬은 문자열관련 문제는 정말 편한것 같다. 더보기
[프로그래머스(Programmers)/Level2](Python) 숫자의 표현 단순히 이중포문을 돌리며 연속되는 자연수들을 더해가면서 주어진 숫자와 같으면 answer을 증가시켜주는 식으로 풀었다. 간단한 문제였다. 기본에 더욱 충실해야겠다. 더보기
[프로그래머스(Programmers)/Level2](Python) 포켓몬 포켓몬 종류별로 세서 가져갈 수 있는 포켓몬 수가 포켓몬 종류보다 많거나 같으면 포켓몬의 모든종류를 리턴, 아니면 그냥 가져갈 수 있는 포켓몬 수를 리턴한다. 와 같이 처음에는 정말 모든 경우의 수를 다 체크하며 구했는데 시간 초과가 났다. 문제에서 필요로하는 답을 어떻게하면 더 효율적으로 구할지 생각을 많이 해보아야 겠다. 더보기
[프로그래머스(Programmers)/Level2](Python) 땅 따먹기 다이나믹 프로그래밍을 이용하여 한행 한행 내려갈때마다 이전까지의 계산값이 최대가 되는 수를 반영한다. 값을 선택한 행의 바로 아래행에서는 동일한 열의 값을 사용할 수 없으므로 i행j열일 경우 i-1행의 해당 열을 제외한 부분에서의 최댓값을 해당 i행j열의 값에 더해주면서 내려가면 결국 마지막행의 최댓값이 답이 된다. 앞서 공부했던 dp를 복습 할 수 있어 좋았고, 비교적 생각하기 쉬운 dp 문제였다.(dp는 좀 느리긴 하겠지만 이런 문제와 같이 특수한 조건(연속한 열을 고를수 없다 등 예외가 많이 발생할 수 있는 상황)이 주어진 경우 아주 유용한 것 같다. 더보기
[프로그래머스(Programmers)/Level2](Python) 다음 큰 숫자 입력받은 수를 2진수로 바꾼뒤, 1의 갯수를 세어주고 주어진 범위내의 값에서 1씩 증가시켜가며 1의 갯수가 같아질때 리턴. 범위가 백만정도가 되면 손쉽게 안풀리는 문제를 많이 접해서인지 범위를 보자마자 간단한 풀이법은 제쳐두고 특수한 알고리즘을 찾으려고 노력했다.0의갯수만 고정되어 있으면 충분히 풀 수 있었는데 반례가 너무 많은거 같아서 쉬운방법을 택했다. 효율성 테스트 까지 한방에 코드2로 통과했다... 항상 문제를 풀다가 막히거나 억지로 푼다 싶으면 다른 풀이를 빨리 찾아보는 연습을 해야겠다. 더보기
[프로그래머스(Programmers)/Level2](Python) 올바른 괄호 list하나를 만들어 짝이 맞는게 들어오면 리스트에서 짝을기다리는 '('하나를 제거해주고 ')'가 들어올 차롄데 리스트가 비어있거나 모든작업이 끝난후 리스트가 비어있지않으면( '('이 리스트에 남은 상황) False를 리턴해주면 된다. 비교적 쉬운 문제였다. 더보기
[프로그래머스(Programmers)/Level2](Python) 튜플 숫자로만 이루어진 문자열로 나눠서 담은 뒤, 길이순으로 정렬하고(길이가 작은것 부터 튜플에 담겨야 하므로) 숫자사이의 ','를 없애준 뒤, 셋으로 바꾸고 길이순으로 정렬 했으니까 바로 뒤쪽 원소에서 앞쪽 원소를 빼가면서 ({2,1}-{2}={1}이런식이 set에선 동작한다.) 셋의 원소는 건드릴수 없으므로 리스트로 바꿔준 뒤, 리스트의 첫번째 원소를 int형으로 바꿔 리스트에 추가하면 원하는 답이 나온다. 정말 쉽게 봤는데 생각보다 건드릴곳이 많았다. 문자열 관련문제를 파이썬으로 푸는건 정말 편한것 같다는걸 새삼 느꼈다. 더보기