프로그래머스 21

📑 프로그래머스_시소짝꿍_Day10

알고리즘 챌린지 10일 차이다. 시작할 때는 조금 자신이 없었지만 어느덧 열흘 가까이하다 보니 자신감이 생기고 더 잘할 수 있을 것 같은 느낌이 샘솟는다. 오늘은 프로그래머스 level2에 분류된 시소짝꿍 문제를 가져왔다. 조건을 보자마자 완전 탐색(O(n^2))은 어려울 것이라는 생각이 들었을 것이다. 그렇다면 한 번의 반복(O(n))으로 시간 복잡도를 최적화하는 방법을 찾아보아야 한다. 간단하게 생각해보면 각 무게마다 1:1, 1:2, 2:3, 3:4 비율의 무게를 가진 사람이 몇 명 있는지 체크해보아야 한다. 경우의 수를 살펴보기 전에 문제에서는 자세하게 언급하지 않았지만 순서쌍이라고 했다. 그 말인 즉, 순서쌍에 포함되는 사람의 종류는 구분이 필요하지만 같은 사람끼리는 순서를 고려할 필요가 없다...

📑 프로그래머스_마법의 엘리베이터_Day9

알고리즘 챌린지 9일 차이다. 오늘은 프로그래머스 Level2에 분류된 마법의 엘리베이터 문제를 가져왔다. https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조건을 따지는 것이 크게 어렵지 않기 때문에 손으로 몇 번 써보면 금방 문제를 풀이할 수 있을 것이다. 결론적으로 모든 자릿수의 값을 0으로 만들어야 하는데, 위로 가냐 아래로 가냐의 차이일 뿐이다. 위로 가는 경우 다음 자릿수의 값이 +1이 되기 때문에 경우의 수를 조금만 더 꼼꼼히 챙겨..

📑 프로그래머스_호텔 대실_Day8

알고리즘 챌린지 8일 차이다. 막상 시작해 보니 어찌어찌하고 있기는 한데, 조금 더 열심히 하려면 주말은 쉬는 걸로 할 걸 그랬나 보다.. 다다음주에는 여행을 가니 할 수 있을 때 열심히 꾸준히 해야겠다. 오늘도 프로그래머스 Level2에 분류된 문제를 가지고 왔다. https://school.programmers.co.kr/learn/courses/30/lessons/155651?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 다양한 방법으로 풀 수 있겠지만 필자는 비교적 간단하게 구간합 알고리즘을 사용했다. 배열의 길이가 100..

📑 프로그래머스_광물캐기_Day7

알고리즘 챌린지 7일차이다. 오늘로서 설 연휴 마지막날이기도 하다. 스스로 자제하고 덜 나간것도 있긴하지만 약속이 좀 적었어서 집에서 알고리즘을 풀 수 있었던것 같다 ㅋㅋ 오늘은 프로그래머스 Level2로 분류된 광물 캐기 문제를 풀어보았다. 동적 계획법은 아니지만 그리디 알고리즘을 사용해서 풀이했다. 문제에서 주어진 조건만 잘 분석하면 풀 수 있는 쉬운 문제였다. 세 개의 곡괭이 중에서 하나를 골라(=그리디 알고리즘) 최소 피로도를 구한다. 한 곡괭이로 최대 5개의 광물을 캘 수 있다, 선택한 곡괭이는 다 쓸때까지 바꿀 수 없다. (= 5개씩 그룹화) 곡괭이를 다 쓰거나 광물을 다 캔 경우 종료한다. (= 반복의 탈출 조건) 코드의 주석을 달아놓았으니 이해가 어렵지 않을 것 같지만 핵심 로직을 간단히 ..

📑 프로그래머스_뒤에 있는 큰 수_Day6

알고리즘 챌린지 6일 차이다. 연휴 기간인 만큼 조금 쉬운 문제를 푸는 점은 양해 바란다... ㅎ 오늘은 자바로만 문제를 풀이해보고자 한다. https://school.programmers.co.kr/learn/courses/30/lessons/154539?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단하게 이중 반복문을 사용하여 완전탐색을 하면 쉽게 풀리겠지만, 배열의 크기가 최악의 경우 1,000,000이기 때문에 시간초과가 무조건 날 거다. 효율적이지도 않고. 이런 경우 특정한 알고리즘을 떠올리기 전에(명확하게 눈에 보이..

📑 프로그래머스_아날로그시계_Day4

알고리즘 챌린지 4일 차이다. 오늘부터 설 명절 연휴가 시작되었다. 오전에 가족들과 당일치기로 강릉을 다녀와서 그런지 너무 피곤해가지고 오늘은 스킵할까 고민해 봤지만, 꾹 참고 그래도 한 문제만 풀기 위해 컴퓨터를 켰다. 오랜만에 알고리즘을 푸는 것이라 천천히 감을 되찾으려고 프로그래머스 level2만 먼저 풀어보고 있는데,,, 오늘 고른 문제는 진짜 안그래도 피곤해서 그런지 포기할까 싶었다. ㅋㅋㅋ Level2치고 너무 어려운 거 아닌가...? 싶을 정도였다. 정답률이 11%이길래 긴가민가 하다가 얼마나 어렵겠어 했는데 따져야 할 조건이 너무 어렵고, 접근 자체도 간단한 듯 간단하지 않았다. 이해가 어려울 것 같기 때문에 하나하나 차근차근 최대한 상세하게 설명해 보도록 하겠다. 오늘은 파이썬 말고,, ..

📑 프로그래머스_숫자 변환하기_Day3

알고리즘 풀이 챌린지 3일차이다. 평일에는 출근해서 점심시간에 짬짬이 풀고 포스팅을 하고 있지만,, 내일부터 시작될 설 연휴동안 문제를 풀 수 있을까 걱정이다.. ㅋㅋ 이왕 시작한거 연휴에도 쉬지 않고 매일 한 문제씩 꼭 진행해보자. 오늘은 프로그래머스 level2로 분류된 동적 계획법 문제를 가지고 왔다. https://school.programmers.co.kr/learn/courses/30/lessons/154538?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 동전으로 내야하는 금액을 맞추는 것과 아주 비슷한 ..

📑 프로그래머스_혼자서 하는 틱_Day2

알고리즘 풀이 챌린지 2일 차이다. 오늘은 마찬가지로 프로그래머스 level2로 분류되어 있는 구현 문제를 가져와 풀이해 보았다. https://school.programmers.co.kr/learn/courses/30/lessons/160585?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제를 읽다 보면 머쓱이의 실수를 고려해야 하나 하는 의심이 들었지만 그냥 그럴 수도 있겠다~ 정도만 생각하고 가볍게 읽어도 될 것 같다. 머쓱이의 실수와는 별개로 결과론적으로 봤을 때, 규칙 내에서 가능한 경우의 수 인지만 판단하면 된..

📑 프로그래머스_미로탈출_Day1

오랜만에 다시 알고리즘 풀이를 시작하려 한다. 최근 가까운 지인을 통해 알고리즘 말고 다른 간단한 챌린지를 시작했는데, 챌린지 형식으로 진행하다 보니 열심히 빠짐없이 한 달 동안 완수할 수 있었던 것 같다. 혼자 하다 보니 금세 또 보여지는 면이 없어서 실천이 어려울 수도 있지만, 같은 방식으로 스스로 챌린지를 진행하여 매일 한 문제씩 알고리즘을 풀고 블로그에 포스팅을 남기는 도전을 해보고자 한다. 메인 언어인 자바를 비롯하여 가능하다면 파이썬까지 풀이를 두 가지로 하여 파이썬 복습 겸 챌린지를 시작해 보겠다. 오늘 풀이해 볼 문제는 프로그래머스 level 2로 배정된 너비 우선 탐색 문제이다. https://school.programmers.co.kr/learn/courses/30/lessons/159..