프로그래밍기초 제13주 실습과제

       

문자열(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();     
    }  
}