Tany
백문이불어일Tany
Tany
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • JAVA TPC (1)
    • JAVA (10)
    • CS (3)
    • SPRING (5)
    • DFS BFS (12)
    • SQL (7)
    • 알고리즘 정리 (76)
    • Git, Github (3)
    • 학습 계획 (36)
    • 코드스쿼드 학습일지 (19)
    • Servlet (5)
    • VPC (2)
    • AWS (4)
    • JPA (5)
    • 취미생활 (2)
    • 프로젝트 기록 (7)
      • Issue Tracker 삽질 기록 (5)
      • 당근마켓 API 서버 기록 (2)
      • 나만의 블로그 제작 기록 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 주간 학습 계획
  • 정렬
  • dfs
  • 해시
  • 재귀
  • 면접을 위한 CS 전공지식 노트
  • 문자열
  • 파이썬
  • 프로그래머스
  • hash
  • 완전탐색
  • 자료구조
  • 이코테
  • 인프런
  • MVC
  • MySQL
  • GIT
  • 자바
  • EC2
  • java
  • JSP
  • 이분탐색
  • sql
  • Stack
  • JPA
  • AWS
  • BFS
  • github
  • 알고리즘
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Tany

백문이불어일Tany

백준 1157번[문자열] 단어 공부
알고리즘 정리

백준 1157번[문자열] 단어 공부

2021. 10. 20. 13:45


1) Scanner을 이용한 풀이

 

import java.util.Scanner;

public class Back_1157 {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        // 알파벳 만큼의 배열 생성
        int[] arr = new int[26];
		
        // 입력받은 문자를 탐색해 소문자인지 대문자인지 판별하기 위한 반복문
        for (int i = 0; i < str.length(); i++) {
            // 소문자일 경우
            if (str.charAt(i) <= 'z' && 'a' <= str.charAt(i)) {
                arr[str.charAt(i)-'a']++;
            }
            // 대문자일 경우
            else if (str.charAt(i) <= 'Z' && 'A' <= str.charAt(i)) {
                arr[str.charAt(i)-'A']++;
            }
        }

        int max = 0;

        for (int i = 0; i < arr.length; i++) {
        	
            // 가장 많이 사용된 문자를 확인하기 위한 조건문
            // arr[i] 배열을 탐색해서 값이 가장 높은 값을 변수 max에 저장한다.
            if (arr[i] > max) {
                max = arr[i];
                // baaa라면 {3,1,0,0,0,0,0,0 ... 중략}
                // i+'A'는 숫자 형태기 때문에 char에 담기 위해선 형변환을 해줘야 한다.
                char result = (char)(i+'A');
            }
            
            // 가장 많이 사용된 문자의 중복을 확인하기 위한 조건문
            // 가장 많이 사용된 문자가 또 있다면 ? (위의 if문에 걸리지 않은 것이다.)
            else if (max == arr[i]) {
                char result = '?';
            }
        }
        System.out.println(result);
    }
}

2) Buffered를 활용한 풀이

● Scanner로 풀이한 것과 별반 다를바 없지만 속도 차이가 어마어마하다.

 

import java.io.*;

public class Back_1157_buffered {
    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String str = br.readLine();
        int[] arr = new int[26];

        for (int i = 0; i < str.length(); i++) {
            if ('a' <= str.charAt(i) && str.charAt(i) <= 'z') {
                arr[str.charAt(i)-'a']++;
            }

            else if ('A' <= str.charAt(i) && str.charAt(i) <= 'Z') {
                arr[str.charAt(i)-'A']++;
            }
        }

        int max = 0;
        // 따로 변수를 초기화하고 써도 상관은 없다.. ㅎㅎ
        char result = ' ';

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
                max = arr[i];
                result = (char)(i+'A');

            } else if (arr[i] == max) {
                result = '?';
            }
        }
        System.out.println(result);
    }
}

'알고리즘 정리' 카테고리의 다른 글

백준 2098번[문자열] 상수  (0) 2021.10.20
백준 1152번[문자열] 단어의 개수  (0) 2021.10.20
백준 2675번[문자열] 문자열 반복  (0) 2021.10.20
백준 10809번[문자열] 알파벳 찾기  (0) 2021.10.20
백준 11720번[문자열] 숫자의 합  (0) 2021.10.20
    '알고리즘 정리' 카테고리의 다른 글
    • 백준 2098번[문자열] 상수
    • 백준 1152번[문자열] 단어의 개수
    • 백준 2675번[문자열] 문자열 반복
    • 백준 10809번[문자열] 알파벳 찾기
    Tany
    Tany
    내가 보려고 만드는 백엔드 기록장 Github https://github.com/juni8453

    티스토리툴바