Code Signal -Arcade
코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당.
주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...
되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요! \
Is Beautiful String
아름다운 문자열??
문자열에서 각 문자들 , 즉 알파벳의 종류가 있는데, a-z까지 순으로 유지되며, 뒷순서의 알파벳은 앞순서의 알파벳의 갯수보다 같거나 작아야 합니다.
즉, 문자열에서 알파벳 시퀀스가 유지되는지 확인.
문자열에 해당 알파벳 갯수가 이전 알파벳 갯수보다 많으면 안됩니다.
1. ABCD --- > 이런식으로 시퀀스가 있어야하고,
2. AAABBC ----> 이런식으로, A가 3개 일때, B는 3개 이하여야합니다. C는 B기준으로 B의 갯수보다 이하여야하고요.
3. BBBCCD ----> 이 경우에는 A 가 빠져 있으므로, 시퀀스가 유지 안됩니다.......
답안을 보겠습니다.
boolean isBeautifulString(String input) {
int [] line = new int[26];
for(int i = 0; i<input.length(); i++){
line[input.charAt(i)-'a']++;
}
System.out.println(Arrays.toString(line));
for(int a = 1; a < line.length; a++){
if(line[a-1] < line[a]){
System.out.println("more than");
return false;
}else if(line[a] == 0){
System.out.println("zero find");
int zeroSum = 0;
for(int z = a; z<line.length; z++){
zeroSum += line[z]; }
if(zeroSum == 0){
System.out.println("after zero all");
return true;}
}
}
System.out.println("nothing problem");
return true;
}
알파벳의 갯수만큼 배열의 크기를 선언해줍니다. 그렇게 하여, 각 자리의 알파벳들을 순서대로 넣어줍니다.
int [] line = new int[26];
for(int i = 0; i<input.length(); i++){ line[input.charAt(i)-'a']++; }
이렇게 하면 각 알파벳 자리의 순서대로 문자열에 있는 알파벳 구성의 횟수대로 들어가게 됩니다.
이를 통해서, 앞에 순서의 알파벳과 뒤에 순서 알파벳의 관계와 총 시퀀스 유지가 되는지 등 다양한 조건을 확인해줍니다.
반복문과 가정문을 활용하여 조건들의 일치여부를 확인해줍니다.
for(int a = 1; a < line.length; a++){
if(line[a-1] < line[a]){
System.out.println("more than");
return false;
}else if(line[a] == 0){
System.out.println("zero find");
int zeroSum = 0;
for(int z = a; z<line.length; z++){
zeroSum += line[z]; }
if(zeroSum == 0){
System.out.println("after zero all");
return true;}
}
}
각 조건문들은 여러 가지 경우에 조건을 걸어서 리턴값을 나오게 하도록 하는 것입니다.
코드를 보시면 이해될겁니다. 모르겟으면,, 댓글;;
ㅎㅎ
이제 엘리트 분들의 답안을 감상하자...
JAVA
boolean isBeautifulString(String s) {
int [] c = new int[26];
for (int i : s.getBytes()) c[i-'a'] ++;
for (int i = 1; i < 26; i ++)
if (c[i] > c[i-1]) return false;
return true;
}
Python3
def isBeautifulString(inputString):
r = [inputString.count(i) for i in string.ascii_lowercase]
return r[::-1] == sorted(r)
JS
function isBeautifulString(inputString) {
s = "abcdefghijklmnopqrstuvwxyz"
for (i = 1; i < s.length; i++) {
if (inputString.split(s[i]).length-1 > inputString.split(s[i-1]).length-1) {
return false}}
return true}
공감 버튼♥ 눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!
부탁드려요 돈드는거 아니잖아요~
'Algorithm > Java' 카테고리의 다른 글
#44_Code Signal Arcade >> Find Email Domain (0) | 2020.03.19 |
---|---|
#42_Code Signal Arcade >> Bishop And Pawn (0) | 2020.03.09 |
#41_Code Signal Arcade >> Digit Degree (0) | 2020.03.08 |