알고리즘/programmers 294

[Programmers] 없는 숫자 더하기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/86051 코딩테스트 연습 - 없는 숫자 더하기 0부터 9까지의 숫자 중 일부가 들어있는 배열 numbers가 매개변수로 주어집니다. numbers에서 찾을 수 없는 0부터 9까지의 숫자를 모두 찾아 더한 수를 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 간단한 구현 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers] 110 옮기기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/77886 코딩테스트 연습 - 110 옮기기 0과 1로 이루어진 어떤 문자열 x에 대해서, 당신은 다음과 같은 행동을 통해 x를 최대한 사전 순으로 앞에 오도록 만들고자 합니다. x에 있는 "110"을 뽑아서, 임의의 위치에 다시 삽입합니다. 예를 programmers.co.kr 시간제한이 10초인 것 같습니다. 알고리즘은 아래와 같습니다. 1. 110은 1로 시작하기 때문에 문자열 내 마지막 0 뒤로 옮기는 것이 사전 순으로 앞에 오게 만드는 방법입니다. 2. 우선 110들을 주어진 문자열에서 제거하고 몇 개를 제거했는지 카운팅 합니다. 3. 남은 문자열 내 마지막 0 위치를 찾습니다. 3.1 ..

[Programmers] 2개 이하로 다른 비트

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/77885 코딩테스트 연습 - 2개 이하로 다른 비트 programmers.co.kr 두 가지 경우의 수를 고려해야 하는 문제였습니다. 1. 짝수인 경우 끝 비트가 0이므로 1만 더해주면 됩니다. 2. 홀수인 경우 끝 비트가 1이기 때문에 1을 더해주면 비트가 상당히 많이 바뀝니다. 따라서, 짝수와는 다른 방법으로 접근해야 합니다. 2.1 끝에서부터 즉, 2^0승부터 연속되는 1의 개수 k를 구하고 2^(k-1)을 더해주면 비트가 최소로 바뀌는 다음 숫자를 구할 수 있습니다. 2.2 예를 들자면, 110111은 k가 3이므로 100을 더해주면 111011이 되고 비트는 두 개만 바뀌면서 11011..

[Programmers] 괄호 회전하기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/76502 코딩테스트 연습 - 괄호 회전하기 programmers.co.kr 반시계 방향으로 문자열을 회전시키면서 올바른 괄호 문자열을 확인해봐야하는 문제였습니다. 순서대로 스택을 넣었을 때 올바른 괄호 문자열이라면 마지막에 스택이 비어있어야합니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers] 약수의 개수와 덧셈

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 약수의 개수가 홀수인 수는 제곱수입니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers] 음양 더하기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/76501 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 간단한 구현 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers 위클리 챌린지 9주차] 전력망을 둘로 나누기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/86971 코딩테스트 연습 - 9주차 9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1 programmers.co.kr 정점이 최대 100인 트리이므로 간선의 개수는 최대 99개입니다. 따라서, 각각의 간선을 제거해보는 완전 탐색법으로 충분히 풀 수 있는 문제였습니다. 개발환경:Visual Studio 2017 지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

[Programmers] 트리 트리오 중간값

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/68937 코딩테스트 연습 - 트리 트리오 중간값 5 [[1,5],[2,5],[3,5],[4,5]] 2 programmers.co.kr 트리의 지름을 구하는 문제를 응용하는 문제였습니다. (https://jaimemin.tistory.com/812) 알고리즘은 아래와 같습니다. 1. 1번 노드를 기준으로 제일 멀리 있는 노드를 찾습니다. 2. 1번에서 구한 노드를 기준으로 제일 멀리 있는 노드를 찾습니다 즉, 트리의 지름을 찾습니다. 2.1 제일 멀리 있는 노드들이 여러 개일 경우 중간값이 트리의 지름이므로 트리의 지름을 반환해줍니다. 3. 2번에서 구한 노드 개수가 하나일 경우 한번 더 트리의 ..

[Programmers] 스타 수열

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/70130 코딩테스트 연습 - 스타 수열 programmers.co.kr 문제의 조건대로 풀면 되는 문제였습니다. 알고리즘은 아래와 같습니다. 1. 우선 주어진 a 내 등장한 숫자와 해당 숫자가 몇 개 나왔는지를 파악합니다. 2. 이후 문제의 조건대로 스타 수열의 길이를 구해줍니다. 2.1 "{x[0], x[1]}, {x[2], x[3]}, ..., {x[2n-2], x[2n-1]} 의 교집합의 원소의 개수가 1 이상입니다."이므로 1번에서 구한 a 내 등장한 숫자를 순서대로 순회하면서 a 내 등장한 숫자가 {a[j], a[j+1]} 집합 내 등장하는지 확인합니다. 2.2 "x[0] != x[1]..

[Programmers] 풍선 터트리기

문제 링크입니다: https://programmers.co.kr/learn/courses/30/lessons/68646 코딩테스트 연습 - 풍선 터트리기 [-16,27,65,-2,58,-92,-71,-68,-61,-33] 6 programmers.co.kr 그리디 하게 생각해야 하는 알고리즘이었습니다. 알고리즘은 아래와 같습니다. 1. 문제 조건 중 "인접한 두 풍선 중에서 번호가 더 작은 풍선을 터트리는 행위는 최대 1번만 할 수 있습니다."라는 조건이 있습니다. 1.1 따라서, 양 쪽 끝 풍선은 어떠한 경우에도 터트릴 수가 있습니다. 2. 1번부터 n-1번 풍선까지는 왼쪽 구간의 최솟값 혹은 오른쪽 구간의 최솟값보다 작을 경우 터트릴 수 있습니다. 2.1 1번의 조건에 의하면 왼쪽 구간의 최소값보다 ..