[프로그래머스|JAVA] 스킬 트리 🌲 | 트리 순회 방식 | 선형 탐색

2025. 8. 24. 14:21·💻코딩/💡Programmers
728x90
반응형

[문제 링크]

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[문제]

입출력 예

skill skill_trees return
"CBD" ["BACDE", "CBADF", "AECB", "BDA"] 2

 


 

📍 [코드]

class Solution {
        /* 
        skill 순회
        skill_trees 순회하며 
            없으면 -> 무시
            있으면 -> 인덱스 맞는지 확인
        */
    public int solution(String skill, String[] skill_trees) {
        int cnt = 0;
        
        for(String tree : skill_trees){
            if(checkTree(tree, skill)) cnt++;
        }
        return cnt;
    }
    
    
    public boolean checkTree (String tree, String skill){
        int skillIdx = 0;
        
        for(char c : tree.toCharArray()) {
            int idx = skill.indexOf(c);
            
            if(idx == -1) continue;  // 없으면 무시
            
            if(idx == skillIdx) skillIdx++;  // 다음 단계
            else return false; // 불가능
        }
        return true;
    }
}

💡 접근법

  • checkTree 메서드 활용
    • skill_trees의 객체인tree를 한단어씩 순회하며skill에서 인덱스를 찾는다.
    • 인덱스가 없으면 무시
      ➡️ skill에 해당되지 않음
    • 있으면 다음 인덱스로 넘어간다.
      ➡️ 다음 skill
    • skill 인덱스와 값이 맞지 않으면, 순서가 옳지 않은 것이므로 불가능
  • checkTree 반환값이 true이면 카운트

✅  tree 순회 방식 사용


 

💬 마무리

처음에 indexOf()를 활용할 생각을 못했다. 이는 활용에 익숙치 않아서가 아닐까 싶다.
이번에 indexOf() 활용법을 익혔고, 유용함을 깨달았으니 다음엔 잘 활용할 수 있을 것 같다.

 

 

 

 

 

 

728x90
반응형

'💻코딩 > 💡Programmers' 카테고리의 다른 글

[프로그래머스|JAVA] 제일 작은 수 제거하기 | 3️⃣가지 풀이법 | stream 및 예외 먼저 처리 등 💬  (0) 2025.08.24
[프로그래머스|JAVA] 문자열 내 마음대로 정렬하기 | Comparator 사용 ⭕️ | @Override 활용 | 풀이법 2️⃣가지 | 스트림 ⭕️❌  (0) 2025.08.24
[프로그래머스|JAVA] 프로세스 | Queue 활용 ⭕️ | 자세한 코드 흐름 설명 💬  (0) 2025.08.24
[프로그래머스|JAVA] 올바른 괄호 | 스택 사용 ⭕️ | 간단 풀이 | 스택 사용 ❌ 방법 | 풀이법 2️⃣가지  (2) 2025.08.24
[프로그래머스|JAVA] 주식 가격 | 스택 / 큐 사용 ❌ | 간단 풀이 | 스택 / 큐 방법 포함 ⭕️ | 풀이법 2️⃣가지  (4) 2025.08.24
'💻코딩/💡Programmers' 카테고리의 다른 글
  • [프로그래머스|JAVA] 제일 작은 수 제거하기 | 3️⃣가지 풀이법 | stream 및 예외 먼저 처리 등 💬
  • [프로그래머스|JAVA] 문자열 내 마음대로 정렬하기 | Comparator 사용 ⭕️ | @Override 활용 | 풀이법 2️⃣가지 | 스트림 ⭕️❌
  • [프로그래머스|JAVA] 프로세스 | Queue 활용 ⭕️ | 자세한 코드 흐름 설명 💬
  • [프로그래머스|JAVA] 올바른 괄호 | 스택 사용 ⭕️ | 간단 풀이 | 스택 사용 ❌ 방법 | 풀이법 2️⃣가지
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    S3
    백엔드
    동시성제어
    GIT
    github
    프로그래머스 #JAVA
    baekjoon
    데브코스
    네트워크
    알고리즘
    map
    Java
    자바
    AWS
    트랜잭션
    프로그래머스
    자료구조
    코딩테스트
    Stream
    Set
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[프로그래머스|JAVA] 스킬 트리 🌲 | 트리 순회 방식 | 선형 탐색
상단으로

티스토리툴바