10798 세로읽기

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] words = new String[5];
        for(int i = 0; i < 5; i++){
            words[i] = sc.nextLine();
        }

        StringBuilder result = new StringBuilder();

        int maxLength = 0;
        for(String word : words){
            if(maxLength < word.length()) maxLength = word.length();
        }

        for (int i = 0; i < maxLength; i++) {
            for (int j = 0; j < 5; j++) {
                if (i < words[j].length()) {
                    result.append(words[j].charAt(i));
                }
            }
        }

        System.out.println(result);
        sc.close();

    }



}

 

코드 설명

  1. 길이가 5인 1차원 배열 words를 선언한다
    • for문을 5번 돌면서 words[i]에 각 word를 입력해준다
  2. words중 가장 길이가 긴 것을 기준으로 세로읽기를 해야하므로, maxLength를 구해준다
  3. 이중 for문으로 maxLength만큼, 5번 반복한다
    • i가 words[j].length()보다 작을 경우, result(StringBuilder)에 words[j].length()를 append해준다
  4. result를 출력해준다

 

실행 결과

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1546 평균  (0) 2023.10.03
[BOJ] 25206 너의 평점은  (0) 2023.09.30
[BOJ] 1316 그룹 단어 체커  (1) 2023.09.30
[BOJ] 10988 팰린드롬인지 확인하기  (0) 2023.09.30
[BOJ] 1629 곱셈  (0) 2022.11.20

1546 평균

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int A[] = new int[N];
        for (int i = 0; i < N ; i++) {
            A[i] = sc.nextInt();
        }
        long sum = 0;
        long max = 0;
        for (int i = 0; i < N ; i++) {
            if(max < A[i]) max = A[i];
            sum += A[i];
        }
        System.out.println(sum*100.0/max/N);
    }
}

 

코드 설명

  1. N에 과목 수 입력받는다
  2. 길이가 N인 1차원 배열 A 선언한다
  3. for문으로 A길이만큼 반복하기
    • A[i]에 각 점수 저장한다
  4. for문으로 A길이만큼 반복하기
    • 최고점은 max에 저장한다
    • 총점은 sum에 저장한다
  5. sum*100/max/N 출력한다

 

실행 결과

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 10798 세로읽기  (1) 2023.10.03
[BOJ] 25206 너의 평점은  (0) 2023.09.30
[BOJ] 1316 그룹 단어 체커  (1) 2023.09.30
[BOJ] 10988 팰린드롬인지 확인하기  (0) 2023.09.30
[BOJ] 1629 곱셈  (0) 2022.11.20

25206 너의 평점은

 

코드

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 {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str[] = new String[20];
        double total = 0;
        double credits = 0;

        for(int i = 0; i < 20; i++){
            str[i] = br.readLine();
            StringTokenizer st = new StringTokenizer(str[i], " ");
            st.nextToken();
            double credit = Double.parseDouble(st.nextToken());
            String grade = st.nextToken();
            total += credit * calculateRating(grade);
            if(!grade.equals("P")) credits += credit;
        }
        double avg = total/credits;
        System.out.printf("%.6f\n", avg);

    }
    public static double calculateRating(String grade) {
        if (grade.equals("A+")) return 4.5;
        if (grade.equals("A0")) return 4.0;
        if (grade.equals("B+")) return 3.5;
        if (grade.equals("B0")) return 3.0;
        if (grade.equals("C+")) return 2.5;
        if (grade.equals("C0")) return 2.0;
        if (grade.equals("D+")) return 1.5;
        if (grade.equals("D0")) return 1.0;
        else return 0.0;
    }
}

 

코드 설명

  1. 20줄을 입력받기 때문에, for문으로 20번 반복하여 str[i]를 입력받는다
  2. 입력받은 한 줄을 각 subject, credit, grade로 토큰화한다
  3. total에 credit과 calculateRating(grade)를 누적시킨다
    • calculateRating은 grade(ex. A+)를 점수(ex. 4.5)로 변환하기 위한 함수이다
  4. grade "P"일 경우, 총 학점 수에는 포함되지 않기 때문에 이를 제외하고 총 몇학점을 들었는지 credits에 누적시킨다
  5. 최종적으로 total을 credits로 나누어 평점을 구한다

 

실행 결과

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 10798 세로읽기  (1) 2023.10.03
[BOJ] 1546 평균  (0) 2023.10.03
[BOJ] 1316 그룹 단어 체커  (1) 2023.09.30
[BOJ] 10988 팰린드롬인지 확인하기  (0) 2023.09.30
[BOJ] 1629 곱셈  (0) 2022.11.20

1316 그룹 단어 체커

 

코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int cnt = 0;
        for (int i = 0; i < n; i++) {
            if(groupWord(sc.next())) cnt++;
        }
        System.out.println(cnt);
    }

    private static boolean groupWord(String word) {
        boolean[] visited = new boolean[26];
        for (int i = 0; i < word.length(); i++) {
            if(!visited[word.charAt(i) - 'a']){ // 처음 나오는 알파벳
                visited[word.charAt(i) - 'a'] = true;
            }
            else if(word.charAt(i-1)!=word.charAt(i)){ // 이전에 나온적 있음 + 전 글자와 연속되지 않음
                return false;
            }
        }
        return true;
    }
}

 

코드 설명

  1. 입력 받을 단어 개수를 n수에 입력받는다.
  2. groupWord함수에 새로 입력받는 단어를 인자로 받아, true라면 cnt값을 1씩 증가시킨다 (n번 반복)
    • for문을 통해 문자열을 순회하며 각 문자의 등장 여부를 확인한다
      • 현 문자가 처음 나온 경우, visited[현 문자] = true를 할당한다
      • 현 문자가 이전에 나왔으며, 직전 문자와 다른 경우, return false
  3. 최종 cnt값을 출력한다

 

 

실행 결과

 

 

'Algorithm > BOJ' 카테고리의 다른 글

[BOJ] 1546 평균  (0) 2023.10.03
[BOJ] 25206 너의 평점은  (0) 2023.09.30
[BOJ] 10988 팰린드롬인지 확인하기  (0) 2023.09.30
[BOJ] 1629 곱셈  (0) 2022.11.20
[BOJ] 5619 세 번째  (0) 2022.11.20

+ Recent posts