반응형
```
백준 17072번 아스키 아트 JAVA 구현해보기
```
이번 글을 통해 배워갈 내용
- 백준 17072번 풀이
https://www.acmicpc.net/problem/17072
17072번: 아스키 아트
위와 같이, 아스키 문자로 그린 그림을 ‘아스키 아트’ 라고 한다. 우리가 알고 있는 일반적인 그림 파일(.jpg, .png 등)들은 기본적으로 해상도에 맞게 픽셀 단위로 분할된 2차원 그리드에 대해
www.acmicpc.net
백준 17072번 아스키 아트는
난이도 브론즈 등급의 문제로서
각 픽셀의 RGB 값을 2차원 배열로 받았을 때
Intensity = 2126 * R + 7152 * G + 722 * B
공식으로 밝기(Intensity)를 구한 다음
각 픽셀 별로
Intensity가 0 ~ 510,000 이면 #
Intensity가 510,000 ~ 1,020,000 이면 o
Intensity가 1,020,000 ~ 1,530,000 이면 +
Intensity가 1,530,000 ~ 2,040,000 이면 -
Intensity가 2,040,000 이상이면.
을 출력해주면 됩니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
구현은
입력을 받고
각 픽셀 별로
해당되는 값을 조건에 따라서 가공해주고
출력해주면 됩니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int ySize = Integer.parseInt(st.nextToken());
int xSize = Integer.parseInt(st.nextToken());
// 입력
StringBuilder imageStr = new StringBuilder();
for (int i = 0; i < ySize; i++) {
imageStr.append(br.readLine()).append(" ");
}
// 가공
char[][] imageArr = new char[ySize][xSize];
st = new StringTokenizer(imageStr.toString(), " ");
for (int y = 0; y < ySize; y++) {
for (int x = 0; x < xSize; x++) {
int redColor = Integer.parseInt(st.nextToken());
int greenColor = Integer.parseInt(st.nextToken());
int blueColor = Integer.parseInt(st.nextToken());
int intensity = 2126 * redColor + 7152 * greenColor + 722 * blueColor;
char ch;
if (intensity >= 2040000) {
ch = '.';
} else if (intensity >= 1530000) {
ch = '-';
} else if (intensity >= 1020000) {
ch = '+';
} else if (intensity >= 510000) {
ch = 'o';
} else {
ch = '#';
}
imageArr[y][x] = ch;
}
}
// 출력
StringBuilder imageOutStr = new StringBuilder();
for (int y = 0; y < ySize; y++) {
for (int x = 0; x < xSize; x++) {
imageOutStr.append(imageArr[y][x]);
}
imageOutStr.append("\n");
}
System.out.println(imageOutStr);
br.close();
}
}
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
728x90
반응형
'Java > Java 알고리즘' 카테고리의 다른 글
백준 15964번 이상한 기호 JAVA 구현해보기 (0) | 2022.02.03 |
---|---|
백준 1159번 농구 경기 JAVA 구현해보기 (0) | 2022.02.02 |
백준 10823번 더하기 2 JAVA 구현해보기 (0) | 2022.02.01 |
백준 1371번 가장 많은 글자 JAVA 구현해보기 (0) | 2022.02.01 |
백준 20978번 共通要素 (Common Elements) JAVA 구현해보기 (0) | 2022.02.01 |