1157 - 단어 공부

2022. 1. 27. 00:26· PS - BOJ
목차
  1. 1157

1157

단어 공부

  • 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. (중복시 '?'반환)
  • 단어의 길이는 1,000,000을 넘지 않는다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class bj1157_0126 {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		// 입력과 동시에 대문자화
		String str1 = br.readLine().toUpperCase();
		// 길이 구하는 함수 여러번 호출하지 말고 그냥 변수에 넣기
		final int len = str1.length();
		// 각 인덱스에 대응하는 알파벳 개수 기록 배열
		int[] arr = new int[len];

		// 기록 시작
		for (int i = 0; i < len; i++) {
			if (arr[i] == -1) // 건너뛰라고 적어놓은 -1이 맞다면 건너뛰기
				continue;
			arr[i]++; // 하나 카운트
			for (int j = i + 1; j < len; j++) {
				// 그 다음 번부터 끝까지, 일치할때마다 +1
				if (str1.charAt(j) == str1.charAt(i)) {
					arr[i]++;
					arr[j] = -1; // 대신 일치한 대상은 -1로 건너뛰어주기
				}
			}
		}
		// 최대값 찾기
		int max = 0;
		int maxIdx = 0;
		for (int i = 0; i < len; i++) {
			if (arr[i] > max) {
				maxIdx = i; // 최대값이 발생한 인덱스
				max = arr[i]; // 최대값
			}
		}

		int check = 0; // 최대값 중복 확인
		for (int i = 0; i < len; i++) {
			if (arr[i] == max) {
				check++;
				if (check == 2) // 이미 2개면 더 볼 것 없다.
					break;
			}
		}
		if (check == 1)
			System.out.println(str1.charAt(maxIdx));
		else
			System.out.println("?");

	}
}
  • 어렵다.
  • 일단... 분명 메모리초과 시간초과를 이겨야 하는 문제인 것 같고... 그래서 빠른입출력을 썼고.
  • 마지막에 100%까지 갔다가 계속 틀렸습니다 뜨길래 뭐가문제지 하고 계속 들여다봤더니...
  • 하나만 입력했을 때 그 문자를 그대로 반환할 수 없는 코드였다. 그래서 수정해서 냈더니 됐다.
  • 이 문제도... java로 해서 어려운 것 같다. 다른 언어로 하면 더 쉬울 것 같다.
저작자표시 (새창열림)

'PS - BOJ' 카테고리의 다른 글

1292, 1316, 1357 - 쉽게 푸는 문제, 그룹 단어 체커, 뒤집힌 덧셈  (0) 2022.01.30
1193 - 분수찾기, 1225 - 이상한 곱셈, 1233 - 주사위  (0) 2022.01.28
1100, 1110, 1159 - 하얀 칸, 더하기 사이클, 농구 경기  (0) 2022.01.27
1026, 1037, 1085 - 보물, 약수, 직사각형에서 탈출  (0) 2022.01.26
1003 - 피보나치 함수  (0) 2022.01.25
  1. 1157
'PS - BOJ' 카테고리의 다른 글
  • 1292, 1316, 1357 - 쉽게 푸는 문제, 그룹 단어 체커, 뒤집힌 덧셈
  • 1193 - 분수찾기, 1225 - 이상한 곱셈, 1233 - 주사위
  • 1100, 1110, 1159 - 하얀 칸, 더하기 사이클, 농구 경기
  • 1026, 1037, 1085 - 보물, 약수, 직사각형에서 탈출
승농
승농
나는 실시간으로 강해지고 있는 백엔드 개발자.
승농
개발자국의 승농
승농
전체
오늘
어제
  • 분류 전체보기 (57)
    • 자유 (0)
    • 코딩 (33)
      • Java (15)
      • WEB 개발 (14)
      • Kotlin (1)
      • DB (1)
    • PS - CodeUp (9)
    • PS - BOJ (15)

블로그 메뉴

  • 블로그 소개
  • 방명록

공지사항

인기 글

관리자

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
승농
1157 - 단어 공부
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.