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 |
Tags
- 바이트디그리
- fifaonline
- 강아지 #박스집 #복층
- 랜덤
- 혼술 술자리 인싸앱
- 랜덤스쿼드
- 홈CCTV
- 패스트캠퍼스
- 안드로이드 그림판#그림메모장#낙서장
- fifaonline4
- 스쿼드 메이커
- Ai
- 부르지마세요
- 아두이노#작품#사료급식기
- Java & SpringBoot로 시작하는 웹 프로그래밍
- 박스#강아지집#만들기
- 안드로이드
- 내일배움카드
- 안녕 디지몬
- D-ID
- 독서감상문
- K디지털크레딧
- 불끌때
- 피온4
- 부의감각
- 안드로이드 #앱개발#계산기
- 자바 인강
- #FIFAONLINE4
- 강아지 스마트 펜스
- 안드로이드#앱만들기#알바
Archives
- Today
- Total
LC Studio
백준 2577번 숫자의 개수 본문
첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.
위와같은 문제이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());
int C = Integer.parseInt(br.readLine());
br.close();
int sum = A*B*C;
String Ssum = Integer.toString(sum);
int[] array = new int[Ssum.length()];
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
for(int i=0;i<Ssum.length();i++){
if(i+1 == Ssum.length()){
array[i] = (int) (sum%(Math.pow(10,(Ssum.length()-i))));
bw.write(array[i]+"\n");
}
else{
array[i] = (int) (sum/(Math.pow(10,(Ssum.length()-1-i))));
bw.write(array[i]+"\n");
}
}
bw.flush();
bw.close();
}
}
첫 시도.
A*B*C의 값을 sum에 입력받고, sum의 length를 알아내어, 각 자릿수별 숫자를 알아내려고 시도했다.
하지만 실패... 다음과 같이 출력되었다.
1 A
1 B
123456 C
1
12
123
1234
12345
6
생각대로라면
1
2
3
4
5
6
이런식으로 출력되어야하는데 말이다. 허허...
sum의 length만큼 10에 제곱을 해줘 나눠주는방식이 잘못된 것 같다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());
int C = Integer.parseInt(br.readLine());
br.close();
int sum = A*B*C;
String Ssum = Integer.toString(sum);
String[] array = Ssum.split("");
int[] numArray = new int[10];
for(int i=0;i<Ssum.length();i++){
for(int j=0;j<10;j++){
if(array[i].equals(Integer.toString(j))){
numArray[j] = numArray[j] + 1;
}
}
}
for(int i=0;i<10;i++){
System.out.println(numArray[i]);
}
}
}
생각을 바꿔 위와같이 작성했더니 해결되었다!
입력받은 int 정수를 String으로 바꿔서 String끼리 비교하는 식을 세웠다.
굳이 int -> String -> int로 바꿔서 비교해줄 필요가 없었다.
알고리즘은 제일 단순한 방법을 선택해야하는 것 같다.
반응형
'Java > 백준 알고리즘' 카테고리의 다른 글
백준 4344 평균은 넘겠지 (Java) (0) | 2022.03.15 |
---|---|
백준 8958번 (JAVA) (0) | 2022.03.14 |
백준 3052 나머지(JAVA) (0) | 2022.03.11 |
백준 1110번 더하기 사이클 (JAVA) (0) | 2022.03.10 |
백준 15552번 빠른 A+B (JAVA) (0) | 2022.03.10 |