728x90

해설 14

백준 16506번 CPU 풀이/코드 (파이썬) 간단한 구현문제

해설 코드만 궁금한 분은 깃허브링크 눌러주세요! 문제 설명 위 그림만 보면 뭘까? 싶지만 논리회로?공부를 해본 사람은 금방 감이 올 것 같다. 문제에서 주어지는건 어떤 새로운 언어인데, 그 언어는 opcode, rD, rA, rB로 구성돼있다. 그리고 이것들은 어떤 규칙에 따라서 이진법으로 바꿀 수 있는데 그 규칙에 따라서 10101111.. 이런식의 이진법으로 바꾸면 된다. 감이 안오면 예제를 보면 쉽다. 위에 설명보다 예제를 보는게 더 빠를때가 있다. 다만 세세한 조건은 예제만으로 알긴 힘드니 예제를 보고 다시 문제 읽는 습관을 들여야한다.,, 아무튼ㅋㅋㅋ 그냥 저냥 살짝 까다로운 구현문제라고 보면 된다. 문제 해결 논리 잘 보면 'C'가 있고 없고에 따라서 뒤에 0인지 1인지, 맨 뒤에 rB가 3자..

백준 2281번 데스노트 풀이/코드 (파이썬) 꽤 어려운 다이나믹 프로그래밍 문제

코드만 궁금한 분은 깃허브 링크 눌러주세요! 문제 설명ㄱㄱ 간단히 얘기하자면, 열의 갯수만 지정된 어떤 리스트가 있고 각 칸에 *을 넣는데 이 때 주어진 숫자만큼만 이어서 *을 넣을 수 있고 그 이후에는 한칸만 띠고 다시 *을 넣던가 혹은 다음 행으로 넘어가서 다시 *을 넣어야 한다. 이 때 각 행은 오른쪽 끝에 무조건적으로 0칸 혹은 몇개의 칸이 남게 되는데, 각 칸의 제곱의 합이 최소가 되는 경우를 찾아 그 최소값을 반환하는 문제이다. 이 때 마지막 행의 빈칸은 포함하지 않는다. 문제 해결 논리 1. 우선 dp라는 리스트를 선언하는데, 가로=열의 총 갯수, 세로=숫자의 총갯수이다. 2. n번째 숫자에 해당하는 별을 넣을 때에는 n-1번째의 별의 다음 행에 새로 시작할 수 있고, n-1째 별의 마지막에..

프로그래머스 단어 변환 문제 해설/코드 (파이썬), BFS활용문제

코드만 궁금한 분은 깃허브링크 눌러주세요! GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 설명 문제 해결 논리 1. 주어진 단어들을 키로 하고 값은 False를 갖는 딕셔너리를 만든다. 2. 입력받은 단어들 중 시작 단어와 문자가 1개만 차이나는 단어를 모두 찾아내서 3. 아까 딕셔너리에서 지금 찾은 단어들의 값을 True로 바꾸고 4. 큐에 넣는데, 이 때 지금 찾은 단어만 넣는게 아니라 지금 몇번째 단계인지를 같이 입력한다. 5. 큐에서 단어를 새로 빼고 2~4를 반복한다. 이 때 아직 한번도 나오지 않은 단어들만 (딕셔너리에..

백준 1495번 기타리스트 해설/코드 (파이썬) 좋은 다이나믹 프로그래밍 문제

문제 해설 코드만 궁금한 분은 깃허브링크 눌러주세요..!! GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 설명 문제 해결 논리 얼핏 보면 bfs문제같은데 시간초과로 bfs는 안된다. 생각해보면 계속 갯수가 2씩 곱해지고 최대 100번 반복해야하니까 최악으로는 가장 마지막 경우에 2^N개의 값을 계산해야될 수도 있다(O(2^(N^2))). 따라서 매 곡 순서마다 가능한 음량을 체크하는 리스트를 만들어서 가능한 음량을 체크하는 형식으로 계산하면 반복문을 활용, O(NM)으로 문제를 풀 수 있다. 1. 음량은 0부터 입력된 값 M까지 ..

백준 15989번 1,2,3 더하기 4 해설/코드(파이썬) 다이나믹 프로그래밍 문제

풀이 코드만 궁금한 분은 깃허브링크 눌러주세요..! GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 설명 결국 1, 2, 3을 적당히 잘 섞어서 어떤 수를 만드는데 그게 가능한 경우의 수를 모두 찾아야 한다. 문제 해결 논리 : 1. N이라는 값이 있을 때 그 값의 가능한 경우의 갯수를 dp[N]이라고 하자. 2. 이 때 dp[N]은 dp[N-1] + dp[N-2] + dp[N-3]이다. 그 이유는 N-1째에서 1을 더하고, N-2째에서 2를 더하고, N-3째에서 3을 더하는 것 모두 N을 만족하기 때문에 세 경우의 수를 모두 더해..

백준 13549번 숨바꼭질3 풀이/코드 (파이썬) 우선순위 큐를 활용한 bfs문제!

코드만 궁금한 분은 깃허브링크 눌러주세요! GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 설명 숨바꼭질2 문제와 많이 비슷하다. 숨바꼭질2 문제와 다른점은 이번엔 2*x의 위치로 가는 경우에는 시간추가가 되지 않고, 그리고 움직이는 경우에 따라 움직이는 횟수와 관계없이 시간에 차이가 생기게되면서 이번엔 최소의 시간..값을 찾는 프로그램을 만들어야 한다. 문제 해결 논리 1. 현재의 위치에서 +1, -1, *2만큼 한 경우 이동하는 위치와 그 때마다 지나는 시간을 큐에 저장한다. 2. 큐에서 시간이 가장 작은걸 꺼내서 다시 1번을 ..

(파이썬) 프로그래머스 9주차 위클리챌린지, 전력망을 둘로 나누기 해설/풀이/코드 그래프 탐색문제

코드만 궁금한 분은 깃허브링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 설명 ㄱㄱ 문제는 읽어보시고, 어.. 간단히 설명하면, 1. 트리가 하나 주어지는데 거기에서 어느 간선 하나를 자른다. 2. 이 때 주어진 트리는 두개의 다른 트리로 나뉘어지는데 3. 두 트리의 노드의 갯수 차이가 최소인 경우를 찾아서 그 차이값을 리턴하면 된다. 다음은 내가 풀이한.. 문제 해결 논리이다. 간단히 얘기하자면 양쪽 노드의 갯수 균형이 적당히 맞는 트리를 만들면서 그 때의 최상단 노드를 찾고 그 노드의 자식노드 중 하나를 잘라내면 된다. 1..

백준 2606번 바이러스 문제 풀이/해설/코드 (파이썬) 사이클을 확인하는 문제.

코드만 궁금한 분은 깃허브링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 해결 논리 1. 1번 컴퓨터를 방문 표시 후 2. 1번 컴퓨터에 연결된 다른 컴퓨터 모두 스택에 넣기. 3. 스택에 들어가있는 컴퓨터 하나씩 꺼내서 아직 방문 표시가 안돼있으면 다시 스택에 넣기 반복 4. 스택에 남은 값이 더이상 없는 경우 방문표시돼있는 컴퓨터의 갯수 - 1 (1번 컴퓨터는 제외)값을 출력한다. 기본적인 그래프문제.

백준 1038번 감소하는 수 풀이/해설/코드 (파이썬) 다소 까다로운 재귀 + 구현문제

코드만 궁금한 분은 링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 풀이는 스킵! 우선 문제를 보면 바로 알겠지만 적당히 재귀나..브루트포스같은걸 활용하면 되겠거니 싶지만 구현이 다소 귀찮거나 어려울거라는 감이 딱 오는..문제이다. 내가 푼 방법은 두개가 있는데, 위의 풀이부터 설명하자면 1. 10의자리까지만 감소하는 수가 가능하므로 1~10의 자릿수..의 길이에 따라서 반복하는데, 2. 맨 앞자리는 아무 숫자나 와도 되고, 그 뒤부터는 앞자리보단 작은 수가 오도록 한다. 3. 자릿수가 전부 채워질 때마다 숫자를 1씩 카운트 ..

백준 2293번 동전 1 문제 해설/풀이/코드 (파이썬) 다이나믹 프로그래밍 활용..!

코드만 궁금한 분은 깃허브링크 GitHub - Rhyankwon/algorithms Contribute to Rhyankwon/algorithms development by creating an account on GitHub. github.com 문제 이해는 쉽다. 10이 있고, 1원 2원 5원짜리 동전이 있으면 그 동전들을 막 조합해서 10을 만들면 되는데, 그렇게 10이 되는 주어진 동전들의 조합의 총 갯수를 반환하면 된다. 간단한 다이나믹 프로그래밍이다. 1부터 10까지 가능한 동전의 조합 수를 dp라고 하자. 우선 위에 내가 서술한 문제로 보면, dp[10]은 dp[9] + dp[8] + dp[5]이다. 왜냐면, 9까지 만든 다음 거기에 1원짜리 동전 하나를 더하고, 8까지 만든다음 거기에 2원..

728x90