baekjoon 6단계 심화1
기록용 baekjoon 단계별 풀이입니다. 언어 : Java
25083번
1
2
3
4
5
6
7
8
9
10
11
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
System.out.println(" ,r'\"7");
System.out.println("r`-_ ,' ,/");
System.out.println(" \\. \". L_r'");
System.out.println(" `~\\/");
System.out.println(" |");
System.out.println(" |");
}
}
3003번
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
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 바이트스트림을 char 타입으로 처리 후, string 타입으로 변환하여 저장
StringTokenizer st = new StringTokenizer(bf.readLine()," ");
//readLine()으로 한 줄을 입력 받고 공백으로 토큰 구분
int king = 1; //king을 주어진 수(1)로 초기화
int queen = 1;
int rook = 2;
int bishop = 2;
int knight = 2;
int pawn = 8;
king = king-Integer.parseInt(st.nextToken()); //1-입력한 king값을 다시 king 값에 저장
queen = queen - Integer.parseInt(st.nextToken());
rook = rook - Integer.parseInt(st.nextToken());
bishop = bishop - Integer.parseInt(st.nextToken());
knight =knight - Integer.parseInt(st.nextToken());
pawn = pawn - Integer.parseInt(st.nextToken());
System.out.println(king+" "+queen+" "+rook+" "+bishop+" "+knight+" "+pawn);
}
}
2444번
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
32
33
34
35
36
37
38
39
40
41
42
43
44
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
{
System.out.print(" ");
}
for(int k=1;k<=i;k++)
{
System.out.print("*");
}
for(int l=1;l<i;l++)
{
System.out.print("*");
}
System.out.println();
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(" ");
}
for(int k=1;k<=n-i;k++)
{
System.out.print("*");
}
for(int l=1;l<n-i;l++)
{
System.out.print("*");
}
System.out.println();
}
}
}
- 📌상기의 코드는 중복이 많아서 다음과 같이 수정
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
32
33
34
35
36
37
38
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bf.readLine());
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
{
System.out.print(" ");
}
for(int k=1;k<=i*2-1;k++)
{
System.out.print("*");
}
System.out.println();
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(" ");
}
for(int k=1;k<=(n-i)*2-1;k++)
{
System.out.print("*");
}
System.out.println();
}
}
}
10988번
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력 버퍼스트림을 char 타입으로 처리 후, string 타입으로 변환하여 저장
String s = bf.readLine(); //문자열을 한 줄 입력
StringBuilder sb = new StringBuilder(s); //revers 함수를 사용하기 위해 StringBuilder 사용
if(s.equals(sb.reverse().toString())) //문자열과 역순이 동일하면
{
System.out.println(1);
}
else
System.out.println(0);
}
}
1157번 - 다시
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
32
33
34
35
36
37
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[26]; //영문자 개수
String s = bf.readLine(); //문자열 한 줄 입력 받음
for(int i=0;i<s.length();i++) //입력 받은 문자열의 길이만큼
{
if(65<=s.charAt(i) && s.charAt(i)<=90) //대문자 범위
{
arr[s.charAt(i)-65]++; //A-65 = 0, B-65 = 1,
}
else //소문자 범위
arr[s.charAt(i)-97]++; //a-97=0, b-97 = 1
}
int max = -1;
char ch ='?';
for(int i=0;i<26;i++) //영문자 개수만큼 반복
{
if(max<arr[i]) //최대값 구하기
{
max = arr[i];
ch = (char)(i+65); //0+65 = A, 1+65 = B
}
else if(max==arr[i])
{
ch ='?';
}
}
System.out.println(ch);
}
}
2941번 - 다시
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
//키보드 입력인 바이트 스트림을 char 타입으로 처리 후, string 타입으로 변환하여 저장
String s = bf.readLine(); //한 줄 입력 받음
String[] croatiaAlphabet = {"c=","c-","dz=","d-","lj","nj","s=","z="};
//크로아티아 알파벳 초기화
for(String value : croatiaAlphabet) //크로아티아 알파벳 배열에 있는 각각의 요소를 value에 대입하여 반복
{
s = s.replace(value, "A"); //Value의 값을 모두 A로 변환
}
System.out.println(s.length()); //변경된 문자열 s의 길이 출력
}
}
1316번 - 다시
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
static BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException {
int cnt =0;
int n = Integer.parseInt(bf.readLine());
for(int i=0;i<n;i++)
{
if(check())
{
cnt++;
}
}
System.out.println(cnt);
}
public static boolean check() throws IOException{
boolean[] check = new boolean[26];
int prev = 0;
String s = bf.readLine();
for(int i=0;i<s.length();i++)
{
int now = s.charAt(i);
if(prev!= now){ //연속되지 않은 문자인경우, 이전 문자와 현재 문자가 다른 경우
if(check[now-'a']==false) //boolean 배열 초기값 : false, 해당 문자가 처음 나온 경우
{
check[now-'a']= true;
prev = now;
}
else{ //해당 문자가 이미 나온 경우 있는 경우
return false;
}
}
else{ //연속되는 문자인 경우
continue;
}
}
return true;
}
}
25206번 - 다시
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.StringReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
double sumnum = 0; //학점 총합 변수
double sumgrade = 0; // 학점 x 과목평점 변수
StringTokenizer st;
for(int i=0;i<20;i++)
{
st = new StringTokenizer(bf.readLine());
String subject = st.nextToken(); //과목명
double num = Double.parseDouble(st.nextToken()); //학점
String grade = st.nextToken(); //등급
double score =0;
if(!(grade.equals("P")))
{
switch (grade)
{
case "A+":
score = 4.5;
break;
case "A0":
score = 4.0;
break;
case "B+":
score = 3.5;
break;
case "B0":
score = 3.0;
break;
case "C+":
score = 2.5;
break;
case "C0":
score = 2.0;
break;
case "D+":
score = 1.5;
break;
case "D0":
score = 1.0;
break;
case "F":
score = 0.0;
break;
default:
break;
}
sumgrade+=(score*num);
sumnum +=num;
}
}
System.out.printf("%.6f",sumgrade/sumnum);
}
}
This post is licensed under CC BY 4.0 by the author.