본문 바로가기

항해99

23.08.16 항해 99 16기 프로그래밍 기초1 3일차

오늘 공부 한 것

* 2주차 강의의 개인과제

* 팀과제를 완료하였다

* 1, 2주차 강의 복습

 

개인과제는 List / Set / Map 을 이용하여

자료 구조 요리 레시피 메모장 만들기였다

왼쪽이 처음 작성한 것이고

오른쪽이 수정한 것이다

strList.add(text); / strMap.put(lineNumber++, text); /  strSet.add(text);

이렇게 세 곳에서 오류가 나서 결과값이 나오지 않아서 머리를 싸맸는데

알고보니 if문 쪽에 세미콜론을 지우지 않았던 것이다 문법이 맞지않았기에

결과값이 나오지 않은 것이었다

package week02;

import java.util.*;

//- 입력값
//    - 저장할 자료구조명을 입력합니다. (List / Set / Map)
//    - 내가 좋아하는 요리 제목을 먼저 입력합니다.
//    - 이어서 내가 좋아하는 요리 레시피를 한문장씩 입력합니다.
//    - 입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다.
//- 출력값
//    - 입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
//    - 이어서, 입력한 모든 문장앞에 번호를 붙여서 입력 순서에 맞게 모두 출력 해줍니다.
public class prac2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String CollectionName = sc.next();
        String title = sc.nextLine();

        switch (CollectionName){
            case "list":
                ArrayList<String> strList = new ArrayList<>();
                while (true){
                    // 한 줄식 입력 받아서 strList에 저장하게끔
                    String text = sc.nextLine();
                    if (Objects.equals(text, "끝"));{
                        break;
                    }
                    strList.add(text);
                }
                title = "[List로 저장된 " + title + "]"; //괄호로 감싸준 제목
                System.out.println(title);
                //strList를 한줄씩 출력
                for(int i=0; i < strList.size(); i++ ){
                    int number = i + 1;
                    System.out.println(number + ". " + strList.get(i));
                }
                break;
            case "Map":
                Map<Integer, String> strMap = new HashMap<>();
                int lineNumber = 1;

                while (true){
                    // 한 줄식 입력 받아서 strMap에 저장하게끔
                    String text = sc.nextLine();
                    if(Objects.equals(text, "끝")); {
                        break;
                    }
                    strMap.put(lineNumber++, text);
                }
                title = "[Map으로 저장된 " + title + "]"; //괄호로 감싸준 제목
                System.out.println(title);
                //strMap를 한줄씩 출력
                for(int i=0; i<strMap.size(); i++){
                    int number = i + 1;
                    System.out.println(number + ". " + strMap.get(i+1));
                }
                break;
            case "Set":
                LinkedHashSet<String> strSet = new LinkedHashSet<>();

                while (true){
                    // 한 줄식 입력 받아서 strMap에 저장하게끔
                    String text = sc.nextLine();
                    if(Objects.equals(text, "끝")); {
                        break;
                    }
                    strSet.add(text);
                }
                title = "[Set으로 저장된 " + title + "]"; //괄호로 감싸준 제목
                System.out.println(title);

                Iterator iterator = strSet.iterator(); // 순회기능

                //strSet를 한줄씩 출력
                for(int i=0; i<strSet.size(); i++){
                    int number = i + 1;
                    System.out.println(number + ". " + iterator.next());
                }
                break;
            default:
                System.out.println("저장할 수 없는 자료구조입니다");
        }
    }
}
package week02;

import java.util.*;

//- 입력값
//    - 저장할 자료구조명을 입력합니다. (List / Set / Map)
//    - 내가 좋아하는 요리 제목을 먼저 입력합니다.
//    - 이어서 내가 좋아하는 요리 레시피를 한문장씩 입력합니다.
//    - 입력을 마쳤으면 마지막에 “끝” 문자를 입력합니다.
//- 출력값
//    - 입력이 종료되면 저장한 자료구조 이름과 요리 제목을 괄호로 감싸서 먼저 출력 해줍니다.
//    - 이어서, 입력한 모든 문장앞에 번호를 붙여서 입력 순서에 맞게 모두 출력 해줍니다.
public class prac2 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String CollectionName = sc.next();
        String title = sc.nextLine();

        switch (CollectionName){
            case "list":
                ArrayList<String> strList = new ArrayList<>();
                while (true){
                    // 한 줄식 입력 받아서 strList에 저장하게끔
                    String text = sc.nextLine();
                    if (Objects.equals(text, "끝")){
                        break;
                    }
                    strList.add(text);
                }
                title = "[List로 저장된 " + title + "]"; //괄호로 감싸준 제목
                System.out.println(title);
                //strList를 한줄씩 출력
                for(int i=0; i < strList.size(); i++ ){
                    int number = i + 1;
                    System.out.println(number + ". " + strList.get(i));
                }
                break;
            case "Map":
                Map<Integer, String> strMap = new HashMap<>();
                int lineNumber = 1;

                while (true){
                    // 한 줄식 입력 받아서 strMap에 저장하게끔
                    String text = sc.nextLine();
                    if(Objects.equals(text, "끝")) {
                        break;
                    }
                    strMap.put(lineNumber++, text);
                }
                title = "[Map으로 저장된 " + title + "]"; //괄호로 감싸준 제목
                System.out.println(title);
                //strMap를 한줄씩 출력
                for(int i=0; i<strMap.size(); i++){
                    int number = i + 1;
                    System.out.println(number + ". " + strMap.get(i+1));
                }
                break;
            case "Set":
                LinkedHashSet<String> strSet = new LinkedHashSet<>();

                while (true){
                    // 한 줄식 입력 받아서 strMap에 저장하게끔
                    String text = sc.nextLine();
                    if(Objects.equals(text, "끝")) {
                        break;
                    }
                    strSet.add(text);
                }
                title = "[Set으로 저장된 " + title + "]"; //괄호로 감싸준 제목
                System.out.println(title);

                Iterator iterator = strSet.iterator(); // 순회기능

                //strSet를 한줄씩 출력
                for(int i=0; i<strSet.size(); i++){
                    int number = i + 1;
                    System.out.println(number + ". " + iterator.next());
                }
                break;
            default:
                System.out.println("저장할 수 없는 자료구조입니다");
        }
    }
}

 

팀별 과제는 숫자야구를 표한하는 것이었다

아래와 같이 나오도록 만드는 것이었는데

 

컴퓨터가 숫자를 생성하였습니다. 답을 맞춰보세요!
1번째 시도 : 134
0B0S
2번째 시도 : 238
1B1S
3번째 시도 : 820
2B1S
4번째 시도 : 028
3B
5번째 시도 : 280
3S
4번만에 맞히셨습니다. 
게임을 종료합니다.

 

3B0S 나 0B3S로 표현이 자꾸되어 이것을 수정하는데 애먹었다

왼쪽이 처음 작성한 것이고

오른쪽이 수정한 것이다.

if문을 늘려서 조건을 더 추가하였다

사실 머리로는 if문을 추가해야할꺼 같은데라고 생각했지만

어떤식으로 해야할지 어느 위치에 해야할지 정하는게 어려워서

오랜시간이 걸렸다.

그래도 완성하고 정상 동작하는 것을 보니 매우 뿌듯했다

import java.util.Random;
import java.util.Scanner;
 
public class Main {
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  Random random = new Random();
  String num;
  while (true) {
   // 랜덤 숫자 생성
   int a = random.nextInt(10); //0 ~ 10보다 작은 것을 불러옴
   int b = random.nextInt(10);
   int c = random.nextInt(10);
 
   // a, b, c가 모두 다를때 구현
   if (a!=b && a!=c && b!=c) {
      num = Integer.toString(a) + Integer.toString(b) + Integer.toString(c);
      break;
   }
}
System.out.println(num);
 int total = 1;
 boolean isEnd = false;
 while (true) {
   System.out.print(total + "번째 시도 : ");
   String input = sc.next();
   int s = 0;
   int b = 0;
   for(int i=0; i<3; i++){
      for(int j=0; j<3; j++){
          if(input.charAt(i)==num.charAt(j)){
                if(i==j){
                     s++;
                } else {
                     b++;
                }
           }
       }
}
           System.out.println(s + "S" + b + "B");
 
     if(s==3){
        System.out.println(total + "번만에 맞히셨습니다!");
        System.out.println("게임을 종료합니다");
          break;
        }
            total++;
      }
   }
}
import java.util.Random;
import java.util.Scanner;
 
public class Main {
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  Random random = new Random();
  String num;
  while (true) {
   // 랜덤 숫자 생성
   int a = random.nextInt(10); //0 ~ 10보다 작은 것을 불러옴
   int b = random.nextInt(10);
   int c = random.nextInt(10);
 
   // a, b, c가 모두 다를때 구현
   if (a!=b && a!=c && b!=c) {
      num = Integer.toString(a) + Integer.toString(b) + Integer.toString(c);
      break;
   }
}
System.out.println(num);
 int total = 1;
 boolean isEnd = false;
 while (true) {
   System.out.print(total + "번째 시도 : ");
   String input = sc.next();
   int s = 0;
   int b = 0;
   for(int i=0; i<3; i++){
      for(int j=0; j<3; j++){
          if(input.charAt(i)==num.charAt(j)){
                if(i==j){
                     s++;
                } else {
                     b++;
                }
           }
       }
}

  if(s==3){
   System.out.println(s + "S");
   System.out.println(total + "번만에 맞히셨습니다!");
   System.out.println("게임을 종료합니다");
    break;
   }else if (b==3) {
     System.out.println(b + "B");
   } else {
     System.out.println(b + "B"+ s + "S");
   }
 
       total++;
    }
  }
}

 

이후에는 2주차 과제와 팀과제를 해보니

아직 강의 내용이 숙지되지 않은 것같아서

1주차 강의부터 다시 복습했다