🖥️문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/120886
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🎀해결 방법
처음 생각한 방법은 before을 돌면서 after에서 한 글자씩 지우는 방법
하지만 replace가 제대로 돌지 않았다
스터디원들에게 물어서 replaceFirst를 사용해서 해결했다.
딕셔너리로 푸는 방법도 고민했으나 방법을 잘 몰라서 도전하지 못했는데
책에 있는 방법을 사용해서 풀었다.
"HashMap을 사용한 딕셔너리 만들기" 방법으로 해결!
✨replace - 실패
import java.util.HashMap;
import java.util.Map;
public class P_35_120886 {
//처음 생각했던 방법이었으나, replace를 잘못 사용함
public static Integer solution(String before, String after){
for (char b : before.toCharArray()){
if (after.contains(String.valueOf(b))) {
after.replace(b,' '); // replace된 단어를 저장해주지 않음!
} else {
return 0;
}
}
for (char a : after.toCharArray()){
if (a != ' '){
return 0;
}
}
return 1;
}
public static void main(String[] args) {
System.out.println(solution("olleh","hello"));
System.out.println(solution("allpe","apple"));
}
}
✨replace 재지정 - 성공
import java.util.HashMap;
import java.util.Map;
public class P_35_120886 {
public static Integer solution(String before, String after){
for (char b : before.toCharArray()){
if (after.contains(String.valueOf(b))) {
String bb = String.valueOf(b);
after = after.replaceFirst(bb," "); // replaceFirst를 사용해 대체하고, replace된 단어를 재지정해준다
} else {
return 0;
}
}
for (char a : after.toCharArray()){
if (a != ' '){
return 0;
}
}
return 1;
}
public static void main(String[] args) {
System.out.println(solution("olleh","hello"));
System.out.println(solution("allpe","apple"));
}
}
✨HashMap -통과
import java.util.HashMap;
import java.util.Map;
public class P_35_120886 {
// hashmap을 dictionary로 사용하는 방법
public static Map<Character, Integer> toMap (String word){
Map<Character, Integer> map = new HashMap<>();
for (char c : word.toCharArray()) {
map.putIfAbsent(c, 0); // putIfAbsent : KEY가 없으면 넣고,있으면 넣지 않기
map.put(c, map.get(c) + 1); // put : KEY가 없으면 그대로 넣기
}
return map;
}
public static Integer book_solution(String before, String after) {
return toMap(before).equals(toMap(after)) ? 1:0;
}
public static void main(String[] args) {
System.out.println(book_solution("olleh","hello"));
System.out.println(book_solution("allpe","apple"));
}
}
'알고리즘 > Java' 카테고리의 다른 글
[Java 언어] HashSet (0) | 2023.08.15 |
---|---|
(Java) 문자의 배열과 아스키코드, StringBuilder 사용법 (0) | 2023.07.20 |