728x90
문제설명
영어문자로만 이루어진 문자열을 입력받아
사전순으로 출력하세요 그리고 , 영어 대문자가 각각 몇 개가 입력되었는지 확인해봅니다
조건
문자열 s의 길이 : 50
문자열 s는 알파벳으로만 이루어져 있습니다.
예시
입력 : "LEEfdTAEuiao";
출력 1: 사전순 정렬
"AEEELTadfiou"
출력 2:
입력문자 개수
A 3
E 1
L 1
T 1
문제풀이
public static void main(String[] args) {
//다른방법1
// TODO Auto-generated method stub
String s = "";
Scanner sc = new Scanner(System.in);
int[] cpts = new int['Z' - 'A' + 1];
s = sc.next();
char[] c = s.toCharArray();
//문자열 정렬
for (int i = 0; i < c.length; i++) {
int temp;
for (int j = 0; j < c.length; j++) {
if (c[j] > c[i]) {
temp = c[i];
c[i] = c[j];
c[j] = (char)temp;
}
}
}
System.out.println(String.valueOf(s));
System.out.println(String.valueOf(c));
//대문자 갯수 세기
for(int i=0;i<c.length;i++) {
if(c[i]>='A' && c[i]<='Z') {
++cpts[c[i]-'A'];
}
}
for(int i=0;i<cpts.length;i++) {
if(cpts[i]>0) {
System.out.printf("%c : %d\n",i+'A',cpts[i]);
}
}
}
실행화면
해결방법
문제1에서 했던 방식처렴 하나씩 해결하는 방식으로 문제를 풀었다.
실행화면에 보는것과 같이 정렬을 먼저 했고,
c[i]>='A' && c[i]<='Z'의 조건을 사용해서 대문자만 있는것만 꺼내왔고,
++cpts[c[i]-'A']를 이용해서 대문자에 맞게 배열인덱스 위치를 바꿀수 있게 만들었다.
걸린시간
걸린시간은 거의 2시간정도 소요했다.
정렬은 쉽게 했지만, 대문자 갯수 세는 아이디어가 떠오르지 않아서 시간이 오래걸렸다.
도저히 아이디어가 떠오르지 않아서 쌤이 알려주신 방법을 이용해서 풀었다.
728x90
'이론 > algorithm' 카테고리의 다른 글
#문제4 (달력생성) (0) | 2023.05.31 |
---|---|
#문제3(별찍기) (0) | 2023.05.31 |
#문제1(배열 인덱스간의 합계) (1) | 2023.05.30 |
코딩테스트INTRO (0) | 2023.05.29 |