일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스프링과 스프링부트 차이점
- CSS
- 스프링
- 제이쿼리
- 스프링 에러
- 스프링 부트가 해결하려고 했던 문제
- 자바기초
- 자바 왕기초
- 오라클주별데이터
- 스프링 Ioc Container
- 스프링 구글차트
- 오라클통계
- 스프링 Ioc
- 세션
- 자바
- 오라클월별데이터
- HTML
- 자바왕기초
- java
- 썸머노트
- 자바 기초
- 오라클일별데이터
- 스프링 구글차트로 기간별 현황 조회하기
- jsp
- 오라클클라우드에 젠킨스 설치하기
- maven
- 스프링 제어역전
- 자바왕초보
- 오라클
- Spring Boot가 해결하려고 했던 문제
Archives
- Today
- Total
Just Do it
[백준/자바] 5622번: 다이얼 본문
1. 문제
https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
2. 내 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int count = 0;
// 1. switch-case 문을 활용하여 입력받은 대문자의 해당하는 숫자를 더해나간다.
for(int i=0; i<str.length(); i++) {
//2. 입력받은 문자열 내 첫번째 문자부터 확인한다.
switch(str.charAt(i)) {
case 'A' : case 'B' : case 'C': // i번째 문자가 'A', 'B', C' 이면
count += 3; // count에 3을 더한다.
break; // 그리고 해당 switch 문을 빠져나가고 그 다음 문자를 확인한다.
case 'D' : case 'E' : case 'F':
count += 4;
break;
case 'G' : case 'H' : case 'I' :
count += 5;
break;
case 'J' : case 'K' : case 'L' :
count += 6;
break;
case 'M' : case 'N' : case 'O' :
count += 7;
break;
case 'P' : case 'Q' : case 'R' : case 'S' :
count += 8;
break;
case 'T' : case 'U' : case 'V' :
count += 9;
break;
case 'W' : case 'X' : case 'Y' : case 'Z' :
count += 10;
break;
}
}
System.out.print(count); // 그동안 switch-case 문을 돌며 더해온 count를 출력한다.
}
}
3. 다시 체크하고 넘어갈 부분
1) 오랜만에 switch-case 문을 사용했다. 오랜만에 써서 그런지 꽤나 낯설게 느껴진다. switch-case문 다른 예제를 살펴보자.
2) 사실 제일 먼저 이 문제를 보았을 때는 ASCII 코드가 떠올랐다. (대문자 A의 아스키코드가 65이니 이걸 기준으로 범위를 나눠서 count 입력값을 주면 되지 않을까?) 그런데 풀이방법이 잘 떠오르지 않았는데 방금 전 생각나서 아래처럼 다시 풀어보았고 성공했다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int count = 0;
for(int i=0; i<str.length(); i++) {
int num = (int)(str.charAt(i));
// ASCII코드 이용. 대문자 'A'의 아스키 코드는 65이다.
if(num<68) count+=3;
else if(num<71) count+=4;
else if(num<74) count+=5;
else if(num<77) count+=6;
else if(num<80) count+=7;
else if(num<84) count+=8;
else if(num<87) count+=9;
else count+=10;
}
System.out.print(count);
}
}
'신입 개발자가 되기 위해 공부했던 독학 자료들 > Java 연습문제 (백준)' 카테고리의 다른 글
[백준/자바] 2908번: 상수 (0) | 2022.02.13 |
---|---|
[백준/자바] 1157번: 단어 공부 (0) | 2022.02.07 |
[백준/자바] 10809번: 알파벳 찾기 (0) | 2022.02.02 |
[백준/자바] 1065번: 한수 (0) | 2022.01.31 |
[백준/자바] 4344번: 평균은 넘겠지 (0) | 2022.01.29 |