[Programmers]#Level2_스킬 트리, find 알고리즘

2024. 4. 30. 00:58· 문제 풀이/Programmers 문제 풀이
목차
  1. #1. 문제
  2. #2. 풀이
  3. 1. find 알고리즘
  4. 2. 선행 순서를 카운트하고, 현재 스킬이 선행 순서를 지키는지 확인!
  5. #3. 코드

 

#1. 문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

#2. 풀이

 

1. find 알고리즘

 

[Basic C++] #43_STL 알고리즘, find, find_if

[Basic C++] #43_STL 알고리즘, find, find_if STL 알고리즘 중 "find", 그리고 "find_if"에 대해 알아보겠습니다. "전문가를 위한 C"의 17 항목, "STL 알고리즘 마스터하기"에 해당하는 내용입니다. Overview 개념 find

webddevys.tistory.com

 

C++ 표준라이브러리에서 제공하는 find 알고리즘은 지정된 구간 내 특정 항목을 찾는 알고리즘입니다. find 알고리즘은 반복자를 매개로 컨테이너의 구간 내 인자로 주어진 특정 항목을 찾아서 해당 위치의 반복자를 반환합니다. 만약, 찾고자 하는 항목이 지정된 구간 내 존재하지 않을 경우, end 반복자를 반환합니다.

 

2. 선행 순서를 카운트하고, 현재 스킬이 선행 순서를 지키는지 확인!

  1. 먼저, skill_trees를 순회합니다. 
  2. 각 스킬 순서를 문자 단위로 순회하며, 각 문자가 스킬 트리에 존재하는지 확인합니다.
  3. 만약, 특정 스킬이 스킬 트리에 존재하지 않다면, 다음 스킬로 넘어갑니다.
  4. 만약, 특정 스킬이 스킬 트리에 존재한다면, 스킬 트리 선행 순서가 맞는지 확인합니다. 이때, 현재 스킬 선행 순서와 현재 스킬의 순서와 다를 경우, 해당 스킬 트리는 유효하지 않습니다. 반대로, 현재 스킬 선행 순서와 현재 스킬의 순서가 같을 경우, 스킬 선행 순서를 +1해 주고, 다음 스킬을 차례대로 순회합니다.
  5. 위 과정을 반복하며, 유효한 스킬 순서를 카운트해줍니다.

 


 

#3. 코드

/*
    [문제] : 주어진 선행 스킬을 참고해 사용자들의 스킬 트리 가능성 여부 체크
    [설명]
            1. string을 순회하며, 각 char가 skill 목록의 올바른 순서에 위치하는지 find() 알고리즘 활용
*/

#include <string>
#include <vector>
using namespace std;


int solution(string skill, vector<string> skill_trees) {
    int answer = 0;

    for(const auto& skill_tree : skill_trees)
    {
        int presiquisite = 0;
        bool IsVaild = true;

        for(const auto& c : skill_tree)
        {
            auto it = skill.find(c);
            if(it == -1) continue;

            if(it == presiquisite)
            {
                presiquisite++;
            }
            else
            {
                IsVaild = false;
                break;
            }
        }
        if(IsVaild) answer++;
    }

    return answer;
}

 


 

 

 

 

저작자표시 (새창열림)

'문제 풀이 > Programmers 문제 풀이' 카테고리의 다른 글

[Programmers]#Level2_숫자 변환하기, DP  (0) 2024.05.17
[Programmers]#Level3_등굣길, DP  (0) 2024.05.17
[Programmers]#Level2_방문 길이, 미로 찾기 유형, BFS, 너비 우선 탐색  (0) 2024.04.17
[Programmers]#Level2_게임 맵 최단 거리, 미로 찾기 유형, 최단 경로 알고리즘, BFS, 너비 우선 탐색  (0) 2024.04.15
[Programmers]#Level3_네트워크, DFS, 깊이 우선 탐색  (0) 2024.04.15
  1. #1. 문제
  2. #2. 풀이
  3. 1. find 알고리즘
  4. 2. 선행 순서를 카운트하고, 현재 스킬이 선행 순서를 지키는지 확인!
  5. #3. 코드
'문제 풀이/Programmers 문제 풀이' 카테고리의 다른 글
  • [Programmers]#Level2_숫자 변환하기, DP
  • [Programmers]#Level3_등굣길, DP
  • [Programmers]#Level2_방문 길이, 미로 찾기 유형, BFS, 너비 우선 탐색
  • [Programmers]#Level2_게임 맵 최단 거리, 미로 찾기 유형, 최단 경로 알고리즘, BFS, 너비 우선 탐색
Hardii2
Hardii2
Hardii2
개발 블로그
Hardii2
전체
오늘
어제
  • 분류 전체보기
    • 알고리즘
    • 웹 개발
      • Node.js
      • React
    • 게임개발
      • DirectX12
      • 관련 지식
      • Unreal C++
      • Unreal 블루프린트
    • 언어
      • Effective C++
      • Basic C++
      • 디자인 패턴
      • 자료구조
      • 기술 질문
    • 문제 풀이
      • BOJ 문제 풀이
      • Programmers 문제 풀이
      • geeksForgeeks 문제 풀이
    • 수학
      • 확률과 통계
      • 게임수학
    • 개인프로젝트
    • 그룹프로젝트
      • PM
      • Dev
    • Github

블로그 메뉴

  • 홈
  • 글쓰기

공지사항

인기 글

태그

  • 그래프
  • 우선순위 큐
  • 트리
  • set
  • 기술 질문
  • programmers
  • DP
  • 최단 경로
  • 정렬
  • 디자인 패턴
  • Effective C++
  • BFS
  • BOJ
  • C++
  • Unreal Blueprint
  • 알고리즘
  • dfs
  • stl
  • unreal
  • 개발

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
Hardii2
[Programmers]#Level2_스킬 트리, find 알고리즘
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.