기록하지 않았다면 잃어버릴 시간들
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
Home
  • 분류 전체보기 (184)
    • Lang (6)
      • c++ (2)
      • Java (2)
      • python (2)
    • 프레임워크 (18)
      • Spring (16)
      • JPA (2)
    • 알고리즘 (141)
      • 이론 (4)
      • 백준 (59)
      • Codility (13)
      • 프로그래머스 (65)
    • CS (4)
      • 운영체제 (0)
      • 자료구조 (0)
      • DB (4)
      • 네트워크 (0)
      • 보안 (0)
    • 기타 (7)
    • 프로젝트 (4)
      • 게시판 만들기로 배우는 Spring Data JP.. (4)
블로그 내 검색

기록하지 않았다면 잃어버릴 시간들

새로운 것을 배우는게 즐거운 개발자입니다.

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

    Programers 스킬트리

    2022. 7. 26.

    by. 내이름은 킹햄찌

    https://school.programmers.co.kr/learn/courses/30/lessons/49993?language=cpp# 

     

    프로그래머스

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

    programmers.co.kr

    프로그래모스 스킬트리 문제입니다.

     

    아이디어

    위상정렬을 이용한 문제들을 풀어 왔던 경험이 있어서 어렵지 않았습니다.

    아래의 주석을 통하여 문제가 어렵지 않게 이해할 수 있습니다.

     

     

    #include <string>
    #include <vector>
    using namespace std;
    
    
    vector<vector<int>> skill_board(26, vector<int>());
    vector<bool> skill_pre(26, false);
    
    bool checkPreSkill(int n) {
    	for (auto iter : skill_board[n]) {
    		if (!skill_pre[iter])
    			return true;
    	}
    	return false;
    }
    
    
    int solution(string skill, vector<string> skill_trees) {
    	int answer = 0;
    
    	for (int i = 1; i < skill.size(); i++)
    		//이전 스킬 정보를 담아둠
    		skill_board[skill[i] - 'A'].push_back(skill[i - 1] - 'A');
    
    	for (auto iter : skill_trees) {
    
    		fill(skill_pre.begin(), skill_pre.end(), false);
    		for (int i = 0; i < iter.size(); i++) {
    			//이전 스킬을 배우지 않으면 break;
    			if (checkPreSkill(iter[i] - 'A'))
    				break;
    
    			//배웠을때 로직
    			skill_pre[iter[i] - 'A'] = true;
    
    			//마지막까지 다 배울 수 있을 때
    			if (i == iter.size() - 1) answer++;
    		}
    	}
    
    
    	return answer;
    }

    '알고리즘 > 프로그래머스' 카테고리의 다른 글

    Programers 더 맵게  (0) 2022.07.26
    Programers 입국 심사  (0) 2022.07.26
    Programers 주식가격  (0) 2022.07.26
    Programers 배달  (0) 2022.07.26
    2019 카카오 인턴쉽 코딩테스트 2번 튜플  (0) 2022.06.01

    댓글

    관련글

    • Programers 더 맵게 2022.07.26
    • Programers 입국 심사 2022.07.26
    • Programers 주식가격 2022.07.26
    • Programers 배달 2022.07.26
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
내이름은 킹햄찌

티스토리툴바