문자열(string)
아래 모든 문제에 적용되는 지시 사항
- 클래스 선언문 바로 위에 그 클래스에 대한 설명을 주석으로 넣으시오.
- main 함수 외의 함수에도 주석을 넣으시오.
- 주석의 첫 부분은 /** 로 시작하고 끝 부분은 */로 마칩니다.
- 주석을 적어 넣지 않거나 들여쓰기를 하지 않으면 감점합니다.
- 총 7개의 문제가 있는데 P1~P6는 10점씩, P7은 40점 만점으로 채점합니다. 모든 문제에서 입력은 Scanner를 이용하여 키보드로부터 받아들여야 합니다. (배열에 미리 저장해 놓는 것이 아님) 주어진 입력 예외의 다른 입력에도 동작해야 합니다.
- 각 문제에 해당하는 코드를 작성 후 각각 문제 번호를 파일이름에 명시하여 (예:
Problem1.java
) 저장하세요. 제출 시에는 7개의 파일을 압축하여 제출하세요.
P1
두 개의 문자열을 읽어 들인 후 비교하여 사전 순서대로 출력하는 프로그램을 작성하시오.
입력 예:
banana apple
출력 예:
apple banana
P2
한 라인의 문장을 읽어 들여 ‘a’, ‘b’, ‘c’가 처음 나오는 인덱스의 합을 출력하는 프로그램을 작성하시오. 단, 대소문자는 무시함.
입력 예:
A boy carries a bag.
출력 예:
8 // 0+2+6 (8만 출력하면 됨)
P3
10개 이내의 단어를 한 줄에 입력 받아 중복되지 않는 단어만 한 줄에 하나씩 출력하는 프로그램을 작성하시오.
입력 예:
apple banana melon banana pineapple
출력 예:
apple
banana
melon
pineapple
P4
10개 이내의 단어를 입력 받아 연결하여 하나의 문장으로 만드는데 단어 사이에는 공백을 추가하는 프로그램을 작성하시오.
- 단, StringBuilder class의 append 메소드를 사용하시오
- 마지막 입력 단어로
-1
를 입력하면 그 전까지 입력받은 단어들을 연결하여 출력하면 됩니다.
입력 예:
I
have
a
dream
-1
출력 예:
I have a dream
P5
주어진 문자열에 나오는 영문자 중 가장 빈도가 높은 영문자를 출력하는 프로그램을 작성하시오.
입력 예:
ababccc
출력 예:
c
P6
입력된 문자열에서 /로 구분된 토큰을 분리하여 인덱스와 함께 출력하는 프로그램을 작성하시오. (단, StringTokenizer 클래스의 메소드를 활용하시오)
입력 예:
홍길동/장화/홍련/콩쥐/팥쥐
출력 예:
[0] 홍길동
[1] 장화
[2] 홍련
[3] 콩쥐
[4] 팥쥐
P7
순서대로 캔을 쌓고, * 기호가 들어오면 맨 위쪽에 있는 캔을 버려야 한다. 예를 들어 Coke Sprite Fanta * 7-up의 경우, Coke를 맨 밑에 놓고, 그 위에 Sprite, 그 위에 Fanta를 올린다. 다음은 * 기호니까 맨 위에 있던 Fanta를 버리고, 다시 7-up을 올린다. 캔 쌓기가 끝나면 제일 위에 있는 캔부터 무엇인지 출력한다. 입력 각 줄에는 최대 1000개의 캔이 있으며 한 캔의 이름은 최대 10글자이다. 입력은 여러 줄에 걸쳐 입력될 수 있으며 입력 한 줄에 대해 출력 한 줄이 필요하다. (단, Java의 stack 등 추상 자료 구조를 사용하면 안되고, 배열을 사용해서 구현해야 한다.)
입력 예:
Coke Sprite
Coke Sprite Fanta * 7-up
Sprite Coke Sprite Sprite * Fanta * * Fanta
출력 예:
Sprite Coke
7-up Sprite Coke
Fanta Coke Sprite
힌트: 프로그램의 일부를 제공하니, 나머지 부분을 채워 완성하면 됨
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String line;
***
while (input.hasNextLine()) {
line = input.nextLine();
String[] lineToken = line.split(" ");
for (int i=0; i<lineToken.length; i++) {
***
}
***
}
input.close();
}
}