알고리즘/프로그래머스 47

[프로그래머스] 110 옮기기 C++ (Lv.3)

https://school.programmers.co.kr/learn/courses/30/lessons/77886?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 월간 코드 챌린지 시즌2 문제였습니다. 📝 문제 풀이 1. 문자열 str에서 110"을 모두 제거하고 acc 문자열에 삽입 (ex. acc = "110110110 ...") 2. "110"이 제거된 문자열에서 가장 뒤에 있는 0의 인덱스 찾기 가장 뒤에 있는 0의 인덱스를 찾지 못했다면 (1로만 이루어져 있으면) 문자열 앞에 acc 삽입 찾았다면 가장 뒤에 있는..

[프로그래머스] 전력망을 둘로 나누기 C++ (Lv.2)

https://school.programmers.co.kr/learn/courses/30/lessons/86971 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 bfs 문제였습니다. 📝 문제 풀이 1. 송전탑의 전선 정보를 info 벡터에 저장 2. 전선을 하나씩 끊어가면서 bfs 수행하여 하나의 전력망의 송전탑 개수를 계산 끊은 전선의 양쪽 송전탑은 방문 체크 visited[v1] = true; visited[v2] = true; 방문하지 않은 송전탑이면 cnt++ 3. 두 전력망의 차이가 answer보다 작다면 answer 갱신 👩🏻‍💻 ..

[프로그래머스] 피로도 C++

https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 dfs 문제였습니다. 📝 문제 풀이 1. 탐험한 던전 수를 0으로 시작하여 dfs 수행 2. 탐험하지 않은 던전이고 해당 던전의 최소 필요 피로도가 k보다 작거나 같으면 해당 던전 탐험 (dfs 수행) 3. dfs 수행이 끝난 던전은 다른 경우에서 재탐험할 수 있도록 방문 체크 해제 visited[i] = false 3. 현재 탐험 던전 수가 이전 탐험 던전 수보다 크면 cnt 갱신 ..

[프로그래머스] 모음 사전 C++ (Lv.2)

https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 완전 탐색 문제였습니다. 글쓴이는 dfs를 사용하여 풀이했습니다. (프로그래머스 다른 사람 풀이보면 다른 좋은 방법도 많으니까 참고하시면 좋을 것 같아요!) 📝 문제 풀이 1. ""을 시작으로 dfs 수행 2. "AEIOU" 문자열을 순회하면서 dfs 수행 3. dfs 수행할 때마다 cnt++ (사전에서의 단어 위치) ⭐️ 4. 현재 단어가 사전에서 몇 번째인지 탐색하려는 단어와 같..

[프로그래머스] 여행 경로 C++

https://school.programmers.co.kr/learn/courses/30/lessons/43164?language=cpp 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 dfs 문제였습니다. 📝 문제 풀이 1. "ICN" 공항에서 출발하는 항공권이면 path 벡터에 "ICN" 삽입 2. dfs 수행 항공권을 사용했다는 의미로 visited[idx] = true path 벡터에 도착 공항 삽입 주어진 항공권을 다 사용했다면, 가능한 경로 벡터 paths에 path 벡터 삽입 사용하지 않은 항공권이고, 현재 항공권의 도착 공항과 사..

[프로그래머스] 소수 찾기 C++

https://school.programmers.co.kr/learn/courses/30/lessons/42839 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 완전 탐색 문제였습니다. 📝 문제 풀이 1. numbers의 각 문자를 char 타입의 v 벡터에 삽입 2. next_permutation 함수를 사용하기 위해 v 벡터를 오름차순으로 정렬 3. next_permutation을 사용하여 v 벡터의 다음 순열을 구하면서 1자리수 ~ numbers.length()자리수까지의 모든 숫자를 nums 벡터에 삽입 4. sort 함수, earse..

[프로그래머스] 단어 변환 C++

https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 BFS/DFS 문제였습니다. 📝 문제 풀이 1. words에 target이 없으면 곧바로 종료 2. words에서 begin과 한 개의 알파벳만 다른 단어를 모두 큐에 삽입하고 방문 표시 3. 큐에 넣은 단어와 target이 같으면 ➡️ answer과 현재까지의 변환 단계 중 더 작은 값으로 answer 갱신 👩🏻‍💻 C++ 코드 #include #include #include #in..

[프로그래머스] 네트워크 C++ (Lv.3)

https://school.programmers.co.kr/learn/courses/30/lessons/43162 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 DFS 문제였습니다. 📝 문제 풀이 1. 0 컴퓨터를 시작으로 i 컴퓨터와 직간접적으로 연결된 모든 컴퓨터(computers[i])를 탐색 2. i 컴퓨터와 직간접적으로 연결된 컴퓨터는 방문 표시 visited[i] = true 3. DFS 함수가 종료되면 answer += 1 (하나의 네트워크임을 표현) 👩🏻‍💻 C++ 코드 #include #include #define MAX 20..

[프로그래머스] 미로 탈출 C++

https://school.programmers.co.kr/learn/courses/30/lessons/159993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 BFS 문제였습니다. 📝 문제 풀이 1. 미로를 찾기 전에 시작 지점('S')과 레버 ('L'), 그리고 출구('E') 좌표를 찾아 각 pair에 삽입 2. 시작 지점의 좌표에서 레버 좌표까지의 최소 시간을 BFS로 탐색하여 반환 3. 레버를 찾았다면, 레버 좌표에서 출구 좌표까지의 최소 시간을 BFS로 탐색하여 반환 4. 미로를 탈출했다면 시작 지점의 좌표에서 2의 반환값 + 3의..

[프로그래머스] 괄호 회전하기 C++

https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 이번 문제는 구현 문제였습니다. 📝 문제 풀이 1. 배열의 인덱스를 나머지로 생각하여 s를 왼쪽으로 한 칸 회전 (처음에는 s 그대로) ⭐️ 2. 한 칸 회전된 괄호 문자열이 올바른 괄호 문자열인지 확인 (isCorrect 함수 호출) 여는 괄호((또는 [ 또는 {)이면 -> 스택에 push ({{{ 같은 경우를 위해서 bool 타입의 변수 사용) 닫는 괄호이면 -> 스택의 마지막 값이 같은 종류..

반응형