본문 바로가기

전체 글

[프로그래머스(Programmers)/Level2](Python) 점프와 순간이동 2로 나눠서 2의 배수면 count를 증가시키지 않고 2의 배수가 아니면 count증가,1을 감소시켜 2의배수로 만들어주는걸 반복하면 원하는 결과값이 나온다. 규칙을 찾지못하면 한없이 헤메는 문제. 항상 문제파악을 확실하게 하자. (2진법으로 바꿔서 1의 갯수를 세는 풀이도 있었는데 정말 참신했다.) 더보기
[프로그래머스(Programmers)/Level2](Python) 소수 만들기 3개씩 골라 그 세개의 수를 더한 숫자들을 리스트화 시켜서 하나씩 돌아가며 소수인지 확인한 후 소수의 갯수를 세어 리턴한다. 예전보다 map의 사용이 더욱 익숙해지고 편해진거 같다. 더보기
[프로그래머스(Programmers)/Level2](Python) 짝지어 제거하기 리스트를 만들어 알파벳을 넣어가며 짝이 맞을때 마다 리스트에서 제거해주면 마지막에 리스트에 원소가 없으면 성공적으로 모든 알파벳을 짝지어 제거할 수 있는게 되므로 1 을리턴 아니면 0을 리턴한다. 앞전에 리스트에 넣어 소거시키는 문제와 유사해서 복습을 할 수 있었다. 더보기
[프로그래머스(Programmers)/Level2](Python) N개의 최소공배수 최소공배수는 두 수의 곱을 두 수의 최대공약수로 나눈 것 이므로 최대공약수를 찾는 find_gc함수(유클리드 호제법 사용) 를 만들고 시간복잡도를 위해 deque(popleft사용 위해) 로 원소들을 옮긴 뒤, 숫자 두개를 앞에서 부터 픽해 최소공배수를 구해나가면서 원소의 갯수가 하나면 모든 수의 최소공배수 이므로 정답이된다. 효율적인 알고리즘을 위해 최대공약수 구하는 알고리즘을 찾아보았는데 문제를 다 풀고 나서야 파이썬 내에도 gcd라는 최대공약수 구하는 함수가 있다는 사실을 알았다. 더보기
[프로그래머스(Programmers)/Level2](Python) JadenCase문자열 만들기 받은 문자열을 하나씩보며 해당 문자 앞의 문자가 공백일경우 대문자로 바꿔준다.(처음 시작하는 문자는 예외로 처리) 처음엔 그냥 단어별로 리스트에담아 첫문자를 대문자, 나머지 문자들을 소문자로 바꾼뒤, 이어붙였는데 실패했다. 문자열은 공백과 알파벳으로 이루어져 있다고 했으므로 공백이 2개이상 들어오게되면 값이 달라지기 때문이다. 매번느끼지만 문제를 꼼꼼하게 읽어야겠다. 더보기
[프로그래머스(Programmers)/Level2](Python) 행렬의 곱셈 삼중 포문을 이용해 두배열의 곱배열이 담길 리스트에 결과값이 한행 모이기 전까지 임시 리스트에 값들을 모으고, 반복이 한번 끝나면 모은값들을 answer 리스트에 append한다. 삼중 포문을 사용하면서 은근히 변수사용이 헷갈렸다. 코드가 길어질수록 변수명을 확실히 짓고 될수 있으면 반복문의 사용을 최소화 해야 좋을것 같다. 더보기
[프로그래머스(Programmers)/Level2](Python )피보나치 수 빈리스트를 만들어 하나씩 값을 추가하면서 마지막 원소값이 요구하는 값이 된다.(1234567은 어차피 n보다 항상 크므로) 간단한 문제였다. 항상 이런 문제를 재귀로 풀면서 헷갈렸던 적이 많았는데 dp로 푸니까 더쉽고 직관적인 이해가 가능한 것 같다. 더보기
[프로그래머스(Programmers)/Level2](Python) 최솟값 구하기 A리스트는 내림차순 정렬, B리스트는 오름차순정렬을 하여 각 원소들을 곱하며 더한게 정답. 각 배열에서k번째 숫자를 뽑았다면 다음에 k번째 숫자를 다시 뽑을수 없습니다.를 같은열의 숫자는 쓸수없다->정렬은 안된다. 로 생각하고 풀어서 계속 오답이 나오고 생각이 엉켜서 오래 걸렸다. 문제를 잘 읽는 습관을 길러야겠다.!!!!반드시!!!!!!!!!!!!!!!!!!1 더보기