티스토리 뷰
-2022년 10월 첫째주 공부내용 옮겨 씀-
-주소:https://school.programmers.co.kr/learn/courses/30/lessons/42577
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
-문제
어떤 번호가 다른 번호의 접두어인 경우가 있으면 flase, 아니면 true반환
-아이디어
-그냥 그 문자열이 있는지, 위치 어딘지 찾아주는 indexOf사용(처음에 무슨 토크나이저 사용해서 접두어 기준으로 끊고 0번 요소가 접두어랑 같으면 접두어 쓰인것이고 아니라면 접두어 없고 이런식으로 접두어가 있나 확인하려다가 토크나이저가 문자 하나만으로 끊기 가능하고 문자열로 끊기 안된다는것을 알게됨 그래서 replace를 써서 그 접두어인 문자열을 ""으로 변경하고 뭐 이런거 생각하다가 그냥 indexOf를 쓰면 된다는것을 떠올리게됨.. 삽질의 흔적은 첫번째 코드 주석에)
-첫번째 코드
import java.util.StringTokenizer;
import java.util.ArrayList;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
for(int i=0;i<phone_book.length;i++){
for(int j=0;j<phone_book.length;j++){
/* if(phone_book[j].indexOf(phone_book[i])>=0){
ArrayList arr=new ArrayList();
String replaced_str=phone_book[j].replaceFirst(phone_book[i]," ");
System.out.println("교체문장 :"+replaced_str);
StringTokenizer tokenizer=new StringTokenizer(replaced_str," ",true);
while(tokenizer.hasMoreTokens()){
arr.add(tokenizer.nextToken());
System.out.println("추가됨");
}
if(arr.get(0)==" "){
return false;
}
}*/
if(phone_book[j].indexOf(phone_book[i])==0&&!(phone_book[j].equals(phone_book[i]))){
return false;
}
}
}
return true;
}
}
->효율성에서 탈락
-두번째 코드: 힌트를 확인, sort로 사전순 정렬한다
사전순 정렬하면 앞쪽에 (배열의 왼쪽) 접두어로 쓰였을 가능성 있는애들이 오게되고 그 뒤로 그 접두어를 썼을 가능성 높은것이 따라 붙는다
[”123”,”12”,”111”]→[”111”,”12”,”123”]
[”145”,”2586”,”12”]→[”12”,”145”,”2586”]
이런식으로..
import java.util.Arrays;
class Solution {
public boolean solution(String[] phone_book) {
boolean answer = true;
Arrays.sort(phone_book);
for(int i=1;i<phone_book.length;i++){
if(phone_book[i].indexOf(phone_book[i-1])==0){
return false;
}
}
return true;
}
}
-교훈?
작은것과 큰것 비교해야되는 상황에 sort를 떠올릴수있게하자
접두어 문제에서 sort를 생각해보자
사전? 단어 순서? 단어비교? 같은 문제에서도 sort가 쓰일수있지 않을까? 몰라 ㅋㅋ
'공부 > 코딩테스트' 카테고리의 다른 글
프로그래머스 위장 (8) | 2022.11.13 |
---|---|
프로그래머스 완주하지 못한 선수 (1) | 2022.11.13 |
프로그래머스 폰켓몬 (0) | 2022.11.13 |
SW Expert Academy 2072. 홀수만 더하기 - 난이도 D1 (0) | 2022.11.13 |
SW Expert Academy 1859. 백만 장자 프로젝트- 난이도 D2 (1) | 2022.11.13 |