Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 프로그래머스 #가장 큰 물고기 10마리 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #
- 프로그래머스 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #과일로 만든 아이스크림 고르기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #네 번째 점 #3009 #자바 #java #알고리즘 #코린이 #개발자 #study
- 특정 옵션이 포함된 자동차 리스트 구하기 #코린이 #개발자 #study
- 프로그래머스 #mysql #경기도에 위치한 식품창고 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #12세 이하인 여자 환자 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #자동차 대여 기록에서 장기/단기 대여 구분하기 #코린이 #개발자 #study
- 코린이 #개발자 #study
- 프로그래머스 #모음 제거 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기 중 가장 큰 물고기의 길이 구하기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #한 해에 잡은 물고기 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #조건에 맞는 회원수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #흉부외과 또는 일반외과 의사 목록 출력하기 #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #어린 동물 찾기 #코린이 #개발자 #study
- 프로그래머스 #mysql #동명 동물 수 찾기 #알고리즘 #코린이 #개발자
- 백준 #일곱 난쟁이 #2309 #자바 #java #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #아픈 동물 찾기 #mysql #알고리즘 #코린이 #개발자 #study
- 프로그래머스 #동명 동물 수 찾기 #mysql #데이터베이스 #db #코린이 #개발자 #알고리즘
- 프로그래머스 #나이 정보가 없는 회원 수 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #
- 백준 #4153 #직각삼각형 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #잡은 물고기의 평균 길이 구하기 #mysql #알고리즘 #코린이 #개발자 #study
- 백준 #다이얼 #5622 #알고리즘 #자바 #java #코린이 #개발자 #study
- 프로그래머스 #알고리즘 #mysql #인기있는 아이스크림 #코린이 #개발자 #study
- 프로그래머스 #mysql #알고리즘 #이름이 있는 동물의 아이디 #코린이 #개발자 #study
- mysql #min() #max() #최소값 #최대값 #코린이 #개발자 #study
- 프로그래머스 #python 개발자 찾기 #알고리즘 #mysql #코린이 #개발자 #study
- 프로그래머스 #mysql #역순 정렬하기 #알고리즘 #코린이 #개발자 #study
Archives
- Today
- Total
luke
[백준] - 학점계산프로그램 (29614) (자바/Java) 본문
문제 : https://www.acmicpc.net/problem/29614
문제.
풀이.
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
double sum = 0.0;
int cnt = 0;
for (int i = 0; i < str.length(); i++) {
char grade = str.charAt(i);
double gradeValue = 0.0;
if (i < str.length() - 1 && str.charAt(i + 1) == '+') {
switch (grade) {
case 'A':
gradeValue += 4.5;
break;
case 'B':
gradeValue += 3.5;
break;
case 'C':
gradeValue += 2.5;
break;
case 'D':
gradeValue += 1.5;
break;
}
i++;
} else {
switch (str.charAt(i)) {
case 'A':
gradeValue += 4.0;
break;
case 'B':
gradeValue += 3.0;
break;
case 'C':
gradeValue += 2.0;
break;
case 'D':
gradeValue += 1.0;
break;
case 'F':
gradeValue += 0.0;
break;
}
}
sum += gradeValue;
cnt++;
}
double average = sum / cnt;
DecimalFormat df = new DecimalFormat("#.####");
System.out.println(df.format(average));
}
}
오늘 문제는 백준의 스페셜 저지 " 학점계산프로그램 " 문제이다.
제출 비율이 낮은 문제였고 그만큼 구글링을 해도 잘 나오지 않는 문제여서 풀어 봤다.
처음에는 배열, split() 함수를 사용해서 풀어보려 했지만 어렵게 생각하는 거 같아 쉽게 생각해 봐서 switch 문을 사용했다.
(필자의 문제점은 항상 어려운 생각과 문제 풀이를 더 꽈서 생각해서 쉬운 문제도 어렵게 접근한다....)
여튼! 문제에서 까다로웠던 점은 공백 없이 입력하며 A+A를 입력하면 A+, A의 점수를 합하는 알고리즘이 조금 까다로웠다.
그럼 바로 문제풀이를 해보겠다.
1. charAt 를 사용해 각 문자 하나씩 잘라 준다.
2. 그리고 조건식내에 ' A, B, C, D ' 일 때 다음 문자가 ' + ' 인지 확인하고 다음 문자가 ' + '이면 i++를 통해 건너뛴다.
즉 +이면 A+, B+, C+, D+ 점수에 맞게 합산되고 '+'의 인덱스를 건너뛰는 거다.
3. 그렇다면 다음 문자가 ' + ' 가 아니라면 자연스럽게 A, B, C, D 점수에 맞게 합산되는 거다.
4. 다음으로 소수점 4 자릿수까지 보장해야 하기에 ' DecimalFormat '를 사용해 준다.
(DecimalFormat은 끝자리가 0일 경우 해당 0 은 생략된다.)
'알고리즘문제 > 백준 문제(Java)' 카테고리의 다른 글
[백준] - 나머지 (3052) (자바/Java) (0) | 2024.05.26 |
---|---|
[백준] - 2진수 8진수 (1373) (자바/Java) (0) | 2024.05.21 |
[백준] - 숫자 (10093) (자바/Java) (0) | 2024.05.16 |
[백준] - 완전제곱수 (1977) (자바/Java) (0) | 2024.05.15 |
[백준] - 화성 수학 (5355) (자바/Java) (0) | 2024.05.14 |