[프로그래머스][Level2][Java] 스킬트리

2022. 4. 1. 20:57·프로그래머스/Level 2

문제

 

 

내 풀이코드

public int solution(String skill, String[] skill_trees) {   //스킬트리
    int answer = 0;                                         //스킬트리 갯수
    for(String x : skill_trees){                            //skill_trees에 있는 스킬트리 하나씩 뽑아서
        String tmp = x;
        for(int i = 0; i < x.length();i++){                 //스킬트리에서 선행스킬을 제외한 모든 스킬을 없애서 tmp에 넣는다.
            String s = x.substring(i,i+1);
            if(!skill.contains(s)){
                tmp = tmp.replace(s,"");
            }
        }
        if(skill.indexOf(tmp)==0){          //tmp가 선행스킬 순서에 존재하면 스킬트리 갯수에 +1
            answer++;
        }
    }
    return answer;
}

이 문제를 보자마자 생각이 났던 게 indexOf였다.

왜냐하면 선행스킬을 제외한 나머지 스킬들을 다 제거해버린 뒤, 선행스킬이 담겨있는 skill에서 indexOf를 사용해서

skill_trees에 있는 요소들을 비교해봤을 때, 존재하면 0이 나올 것이고 존재하지 않으면 1이나 -1이 나올 것이기 때문이다.

예를 들어, skill에 "CBD"가 담겨있고 skiil_trees[0]에 선행스킬을 제외한 나머지 스킬들을 다 제거했을 때, "BD"

skill_trees[1]에 "CB"가 담겨있다고 가정하자

그러면 skill.indexOf를 사용하면 skill_trees[0]은 CBD에서 두번째 index 즉, 1부터 BD가 나오기 때문에 1이 반환될 것이고, skill_trees[1]은 CBD에서 첫번째 index 즉, 0부터 CB가 나오기 때문에 0이 반환될 것이다.

 

이러한 원리를 알고 코드를 짜면 생각보다 쉽게 풀 수가 있다. 자세한 풀이는 주석에 적어놓았다.

저작자표시 비영리 (새창열림)

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

[프로그래머스][Level2][Java] 영어 끝말잇기  (0) 2022.04.04
[프로그래머스][Level2][Java] n^2배열 자르기  (0) 2022.04.04
[프로그래머스][Level2][Java] 방문 길이  (0) 2022.04.01
[프로그래머스][Level2][Java] 가장 큰 수  (0) 2022.03.25
[프로그래머스][Level2][Java] 타겟 넘버  (0) 2022.03.25
'프로그래머스/Level 2' 카테고리의 다른 글
  • [프로그래머스][Level2][Java] 영어 끝말잇기
  • [프로그래머스][Level2][Java] n^2배열 자르기
  • [프로그래머스][Level2][Java] 방문 길이
  • [프로그래머스][Level2][Java] 가장 큰 수
BvrPark
BvrPark
코드 퍼즐과 개발 일상
  • BvrPark
    비버의 개발 일지
    BvrPark
  • 전체
    오늘
    어제
    • 분류 전체보기 (121)
      • JAVA (7)
        • 메서드 외울 것 (2)
      • 프로그래머스 (56)
        • 총 풀이 코드(깃허브) (1)
        • Level 1 (22)
        • Level 2 (33)
      • 백준 알고리즘(단계 별) (16)
        • 총 풀이 코드(깃허브) (1)
        • 1. 입출력과 사칙연산 (2)
        • 2. if 문 (2)
        • 3. for문 (1)
        • 4. while문 (2)
        • 5. 1차원 배열 (3)
        • 6. 함수 (1)
        • 7. 문자열 (1)
        • 8. 기본수학 1 (3)
      • 백준 알고리즘(solved.ac) (9)
        • 총 풀이 코드(깃허브) (1)
        • class2 (8)
      • LeetCode 문제 풀이 (4)
        • 총 풀이 코드(깃허브) (1)
        • Easy (3)
      • 코드업 알고리즘 (7)
      • git과 github사용법 (4)
      • html, css, javaScript (2)
      • 프로젝트 (11)
        • 순수 Java 프로젝트 (2)
        • 쇼핑몰 프로젝트 (2)
        • 게시판 프로젝트 (5)
        • 근태관리 프로젝트 (2)
      • 커피타임 (2)
        • 2023년 (2)
        • 2024년 (0)
  • 블로그 메뉴

    • 링크

      • 포트폴리오
      • 깃허브
    • 공지사항

    • 인기 글

    • 태그

    • 최근 댓글

    • 최근 글

    • Designed By정상우
    BvrPark
    [프로그래머스][Level2][Java] 스킬트리
    상단으로

    티스토리툴바