문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 후기 처음 Hashmap으로 풀었다가 계속 메모리 에러가 나서, 다른 블로그 글들 확인 후 다시 리팩토링 했다. alphabetASCIIArray 배열을 만들고 index 26(알파벳 갯수)까지 설정한다. 1) 입력받은 수를 대문자로 모두 변경 2) 아스키코드로 변환 후 배열에..
문제 상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다. 상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다. 서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 어느 날 그에게 지방의 한 프로농구팀을 감독할 기회가 생기게 되었다. 그는 엄청난 지도력을 보여주며 프로 리그에서 우승을 했고, 이제 국가대표팀의 감독이 되었다. 내일은 일본과 국가대표 친선 경기가 있는 날이다. 상근이는 내일 경기에 나설 선발 명단을 작성해야 한다. 국가대표팀의 감독이 된 이후에 상근이는 매우 게을러졌다. 그는 선수의 이름을 기억하지 못..
문제 김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다. 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고, 알파벳 소문자로만 이루어져 있다. 출력 첫째 줄에 가장 많이 팔린 책의 제목을 출력한다. 만약 가장 많이 팔린 책이 여러 개일 경우에는 사전 순으로 가장 앞서는 제목을 출력한다..
문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아다닐 수 있을까? 입력 첫째 줄에 테스트 케이스가 주어진다. 테스트 케이스는 최대 100이다. 각 테스트 케이스의 첫째 줄에는 해빈이가 가진 의상의 수 n(0 ≤ n ≤ 30)이 주어진다. 다음 n개에는 해빈이가 가진 의상의 이름과 의상의 종류가 공백으로 구분되어 주어진다. 같은 종류의 의상은 하나만 입을 수 있다. 모든 문자열은 1이상 20이하의 알파벳 소문자로 이루어져있으며 같은 이름을 가진 의상은 ..
ArrayList 를 정렬하는데는 Collections.sort() 메소드를 사용한다. 이 sort() 메소드의 인자로 정렬할 리스트를 넘기게 되는데, 오버로딩된 두 가지 버전의 메소드가 있다. Comparable : 객체 간의 일반적인 정렬이 필요할 때, Comparable 인터페이스를 확장해서 정렬의 기준을 정의하는 compareTo(Object o) 메서드를 구현한다. => 한 가지 기본 정렬 규칙을 설정(클래스에 규칙을 하나 정해놓고 누군가 정렬하라고 한다면 그 객체는 규칙대로 정렬을 수행) Comparator : 객체 간의 특정한 정렬이 필요할 때, Comparator 인터페이스를 확장해서 특정 기준을 정의하는 compare(Object o1, Object o2) 메서드를 구현한다. (두개의 인..
기존 For 문: for(초기화; 조건; 증감) => 하나의 변수(i)로 그 값을 count 한다. for (int i = 0; i size 따로 지정x 1) 배열(①)에서 가져올 첫번째 값이 존재하는지 확인 2) 값이 있다면 -> 변수(②)에 저장 2-1) 값이 없다면 -> for문 종료 3) 실행문(③) 실행 [Ex1] 기본 향상된 For문(배열) int [ ] numList = {1, 2, 3, 4, 5}; for( int i=0; i
문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. Ja..
객체 배열이란? 클래스를 배열로 선언하는 방식 객체 배열을 사용하는 이유 객체는 메모리에서 single record 만 표현할 수 있다. 만약 multiple record를 표현시 객체배열을 사용한다. 다양한 타입(String,Integer, any class instance)의 데이타를 객체 배열을 통해 저장할 수 있다. 기본 데이터 타입의 배열 VS 객체 배열 기본 데이터 타입의 배열 : 배열 선언과 동시에 메모리 생성 객체 배열 : 객체 변수의 이름들만 생성, 실제 객체 내부의 메모리는 생성X ex. Car[] car = new Car[8]; => 참조변수 8개 생성되지만 실제 8개의 참조변수에 대한 객체 자체의 메모리 생성 X ∴ 객체의 메모리를 따로 생성하는 과정이 별도로 필요함! 사용방법 1...
StringTokenizer란? 긴 문자열을 지정된 구분자(delimiter)를 기준으로 토큰(Token)이라는 여러 개의 문자열로 잘라내는 데 사용된다. StringTokenizer의 경우 구분자로 단 하나의 문자 밖에 사용 할 수 없는 단점이 있다. StringTokenizer 객체를 생성할 때 첫 번째 파라미터로 전체 문자열을 주고, 두 번째 파라미터로 구분자를 주면 된다. 만약 구분자가 생략되면 구분자는 기본적으로 공백(space)가 된다. StringTokenizer st = new StringTokenizer("문자열", "구분자"); public class StringTokenizer implements Enumeration { .. .} StringTokenizer 주요 메소드 메소드 설명..
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. Java Solution import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; im..