반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 가상면접2장
- 테스트코드책
- awss3
- 리팩터링2판테스트
- 가상면접으로대규모시스템
- react-ga
- git commit merge
- 가상면접3장
- 리팩토링2판4장
- 시스템설계면접예시
- formik react-query submitting not working
- 시스템설계방법
- git squash
- gitsquash
- FirebaseAnalytics
- 헤드퍼스트전략패턴
- react
- 시스템설계면접팁
- 시스템설계면접
- Git commit 합치기
- formik submitting not working
- 디자인패턴
- file not found Error
- cypressBDD
- 전략패턴
- 리액트구글애널리틱스
- cypress React
- git commit 협업
- s3이미지다운로드됨
- 시스템설계
Archives
- Today
- Total
mingg IT
[JAVA] 프로그래머스 스킬 트리 본문
programmers.co.kr/learn/courses/30/lessons/49993
코딩테스트 연습 - 스킬트리
programmers.co.kr
1차 시도 (실패)
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
String [] skillArray = skill.split("");
for(int i = 0; i < skill_trees.length; i++) {
boolean flag = true;
boolean realflag = true;
int idx = 0;
for(int j = 0; j < skillArray.length; j++) {
String targetStr = skillArray[j];
String [] tempSkillTreeArray = skill_trees[i].split("");
for(int z = 0 ; z < tempSkillTreeArray.length; z++) {
//처음 문자가 배열에 존재하지 않는경우
if(j == 0 && z == tempSkillTreeArray.length -1 && !targetStr.equals(tempSkillTreeArray[z])) {
realflag = false;
}
else if(targetStr.equals(tempSkillTreeArray[z])) {
if(flag == false) {realflag = false;}
if(idx == 0) {
idx = z;
break;
} else {
if(idx < z ) {
idx = z;
break;
} else {
realflag = false;
break;
}
}
} else if(z == tempSkillTreeArray.length -1 && !targetStr.equals(tempSkillTreeArray)) {
flag = false;
}
}
}
if(realflag) answer ++;
}
return answer;
}
}
경우의 수를 처음 스킬을 배우지 않았으면 -> false 반환
배운 스킬의 인덱스를 찾고 인덱스가 더 작으면 스킬 배우는 순서에 맞지 않음으로 -> false반환
1차 코드 실패 이유 : 테스트 케이스 추가 시 잘못 입력함.. 살다살다 이런 이유도 있구나.
예를 들어 스킬은 "CB"이고 스킬 트리는 {"A", "D"} 이면 1을 반환해야하는데 0을 반환하도록 했다.
2차 코드 (성공)
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
String [] skillArray = skill.split("");
for(int i = 0; i < skill_trees.length; i++) {
boolean flag = true;
boolean realflag = true;
int idx = 0;
for(int j = 0; j < skillArray.length; j++) {
String targetStr = skillArray[j];
String [] tempSkillTreeArray = skill_trees[i].split("");
for(int z = 0 ; z < tempSkillTreeArray.length; z++) {
if(targetStr.equals(tempSkillTreeArray[z])) {
if(flag == false ) {realflag = false;}
if(idx == 0) {
idx = z;
break;
} else {
if(idx < z ) {
idx = z;
break;
} else {
realflag = false;
break;
}
}
} else if(z == tempSkillTreeArray.length -1 && !targetStr.equals(tempSkillTreeArray)) {
flag = false;
}
}
}
if(realflag) answer ++;
}
return answer;
}
}
'코딩테스트' 카테고리의 다른 글
[JAVA] 프로그래머스 소수 찾기 (0) | 2021.04.23 |
---|---|
[JAVA] 프로그래머스 문자열 압축 (0) | 2021.04.17 |
[JAVA] 프로그래머스 주식 가격 (0) | 2021.04.13 |
[JAVA] 프로그래머스 프린터 (0) | 2021.04.13 |
[JAVA] 프로그래머스 1 2 4 나라의 숫자 (0) | 2021.04.06 |
Comments