본문 바로가기
반응형

알고리즘115

프로그래머스 - 전화번호 목록 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 문제 풀이 문자열 배열을 정렬하게 되면 문자열의 size로 정렬되는 것이 아니라 맨 앞의 인덱스부터 비교해나가면서 정렬을 하게 된다 예를 들어, ["119", "97674223", "1195524421"]을 정렬하게 되면 ["119", "1195524421", "97674223"] 이 된다. 따라서, 접두어를 찾기 위해 2중 for문을 사용할 .. 2022. 2. 16.
투 포인터 알고리즘(Two Pointers Approach) 투 포인터 알고리즘은 2개의 인덱스(또는 반복자)를 이용하여 문제를 푸는 방법이다. 주로 배열 또는 링크드 리스트와 함께 사용하며 포인터는 시작 시, 사용하고자 하는 목적에 따라 어느 위치에 있어도 상관 없다. 예를 들어, 아래의 왼쪽 그림처럼 같은 위치에서 시작해도 괜찮고 오른쪽 그림처럼 시작점과 끝점에서 시작해도 괜찮다. 투 포인터 알고리즘의 활용 방안은 상당히 많다. 배열을 reverse하는 문제부터 정렬, 연속 수열 문제 등이 존재한다. 예제들을 풀어보고 업데이트 한다. 배열 reverse 문제 : https://appdevorsec.tistory.com/104 수열 문제 : https://appdevorsec.tistory.com/105 2022. 2. 15.
프로그래머스 - 네트워크 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 문제 풀이 n은 컴퓨터의 개수이고 최대 200개이다. 따라서 방문 여부 체크를 할 수 있는 visited 배열은 200번째 인덱스까지 선언해준다. 0번 컴퓨터부터 n번 컴퓨터까지 DFS를 거쳐 연결된 컴퓨터를 체크한다. DFS 함수 내부에는 다시 0부터 n까지 해당 노드와 연결되어 있는 노드들에 대해서 DFS를 거치는데, 문제의 조건 중에서 .. 2022. 2. 15.
프로그래머스 - 타겟 넘버 / C++ 문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 문제 풀이 주어진 숫자를 더하고 빼서 target이 될 수 있는지 찾는 문제이다. numbers 배열의 크기가 크지 않으므로 DFS를 통해 모든 더하기, 빼기의 경우의 수를 체크해보면 된다. 소스 코드 #include using namespace std; int answer = 0; void DFS(vector numbers.. 2022. 2. 13.
반응형