
문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
아만다는 소문자 문자열을 새로운 문자열로 복사하려고 한다. 그녀는 주어진 비용으로 다음과 같은 작업을 실행할 수 있다.
주어진 n개의 문자열 s[i]에 대해, 각 s[i]를 p[i]로 복사하는 최소 비용을 찾아 출력해라.
예를 들면, 문자열 s = abcabc가 주어졌을 때, 3달러로 복사될 수 있다. 먼저 각각의 문자 a, b, c를 1달러씩 비용을 지불하여 복사한다. 이 시점에 문자열 p는 abc이다. p[0:2]를 p 끝에 복사는 비용 없이 복사할 수 있다.
stringConstruction 함수를 완성해라. 문자열을 복사하는 최소 비용을 반환해야 한다.
stringConstruction 함수는 아래와 같은 매개변수를 가지고 있다.
이 문제도 Two String과 같은 방법으로 해결할 수 있다.
먼저 Two String에서 사용한 메소드 int[] getStringCount(String s)을 그대로 사용한다.
public static int[] getStringCount(String s){
int[] count = new int[26];
for(int i = 0; i < s.length(); i++){
count[s.charAt(i) - 'a']++;
}
return count;
}
이제 stringConstruction 메소드를 완성한다.
먼저 정수형 변수 cost를 생성하고 0을 할당한다. 그리고 정수형 배열 counts를 선언하고 getStringCount(s)를 할당한다.
int cost = 0;
int[] counts = getStringCount(s);
반복문을 통해 count가 0보다 클때, cost를 증가시킨다.
for(int i = 0; i < 26; i++){
if(counts[i] > 0){
cost++;
}
}
마지막으로 cost를 반환한다.
return cost;
public static int stringConstruction(String s) {
int cost = 0;
int[] counts = getStringCount(s);
for(int i = 0; i < 26; i++){
if(counts[i] > 0){
cost++;
}
}
return cost;
}
public static int[] getStringCount(String s){
int[] count = new int[26];
for(int i = 0; i < s.length(); i++){
count[s.charAt(i) - 'a']++;
}
return count;
}