상세 컨텐츠

본문 제목

숙지를 위한 연습 문제들 (java)

수업 일지/Java

by NayC 2021. 3. 11. 00:31

본문

728x90

 

 

 

 

 

 

 


* 배열* 

#시도 1  - 틀림
- 3번째 주의

#시도 2  - 암기 성공

 

#시도 1  - 틀림
- rand 함수 생성 시 (); 빼먹음
- 변수 설정 (방 [0] 방 [1] ... 을 정수형 [0] 정수형 [1] 이렇게 표현했음)
- print할건데(rand에서 정수를 가지고 오는거지) 이거 표현 못함

#시도 2 - 틀림
- for문 조건에서 i 변수 설정 빼먹음
- 담아줄 때 rand.nextInt()라고만 표현 (그럼 어디서 랜덤으로 가지고 오는거겠니~)

#시도 3 - 틀림
- for문 조건에서 i 변수 설정시에는 int만 쓰면 된다.
- 위에 for문에서 변수 설정을 해줬더라도, 아래 for문에서도 변수 설정 해준다. 

#시도 4  - 암기 성공


* 개념 again
- System.in.read();로 읽으면 13도 읽지 못하고 1, 3 따로 읽어내니까 -> Scanner 함수 next 관련 얘들이 나왔었지~

* tip
- for문 아래, 출력 적을 때 맨 수열 규칙 정하듯 초항, 둘째항, 셋째항을 생각해보면 쉽다.
  첫 번째 방에는 뭐가 들어가는지만 써봐도 규칙이 보인다. 

/// 
#시도 1  - 틀림
- 랜덤함수 출력때 출력함수 printf라고 적음
- 랜덤함수 출력때 입력함수를 nextLine이라고 적음

 

 

 

#시도 1  - 틀림
- ; 빼먹음
- AAAAAAAAAA 이렇게 출력하게 함

#시도 2  - 암기 성공

#시도 1  - 암기 성공

* 근데 아래랑은 크게 다른 점이 있다. 
chs[i] = 'A' + 1 일 때는 앞에 변수가 필요 없었음 
-> 이거 앞에 변수 이렇게 넣어도 (int)('A'+1); 되니까 그냥 식 앞에 변수를 넣는게 안전할 듯...

 

2번
#시도 1  - 틀림
- 배열에 코드 채울 때, 식 앞에 변수 설정 필요

#시도 2  -  암기 성공


2.1번
#시도 1  - 틀림
- 배열에 코드 채울 때, 식 앞에 변수 설정 필요

#시도 2  -  암기 성공
 

* 2.1번에서
'J'-i 로 배웠으나, 내가 혼자 풀 때는 내가 식 세울 수 있는거로 해서 풀었다. 'A'+(9-i) 

 

#시도 1  -  틀림
- temp 변수선언 방법
- 방이름[위치] 자리라는거. 방이름[위치] = 들어갈 데이터

#시도 2  -  암기 성공

 

 

 

#시도 1  -  틀림
- 곱하기는 *로 표시해줘야함. 난 그냥 2( 이런식으로 해줬음
- 예외 처리에서는 printf인지 print인지
- 그리고 for문이 한 줄 이상이 됐으므로 {} 해줘야 함

#시도 2  -  암기 성공

 

-> 문제 수정. 0, 1, 2로

#시도 1  -  암기 성공

* print(",")는 되는데, print(" , ")는 오류가 난다.
  띄어쓰기는 위에 printf에서 주기

 

개념) 

배열 안에 들어갈 숫자를 미리 알고 있는 경우 

-> int [] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

 

문제 수정 -> 1번에서 1~10을 넣어서 생성하게끔 + 인덱스 2개 랜덤으로 고른 것도 출력값 보여주기

#시도 1  -  틀림
- 나는 두 인덱스를 출력한 건 100번을 돌려주지 않음. 이건 그럼 딱 2개의 인덱스를 100번 바꾸는 꼴인데 그러면 의미가 없지 ㅎㅎ
- 나는 출력도 100번을 돌림  

#시도 2  -  틀림
- 오류가 뜨는데... 질문

Q. 질문
- int [] nums = new int [10]; 로 하면 -> 결과가 0, 0, 0, 0...이 나옴
- int [] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 로 하면 -> 결과가 정수가 채워져서 제대로 나옴. 
-> 계속 작은 수로 바꿔주라고 했으니까 결국 0 0 0 0 ... 이 나올 수 밖에

Q. 질문
    인덱스에서 rand함수 불러올 때는 +1씩 해줘야 하는거 아닌가? (nums를 1~10으로 지정해줬으니) 
-> 1~10 숫자는 nums 방 안의 내용이고, index는 합쳐서 10개만 나오면 되니까 상관 無

///
#시도 1  - 틀림
- System.out.println(rand.nextInt(10)); 라고 입출력을 같이 해버렸네... 
- 그리고 for문 조건 맞는건 같이 묶어주기
- (같은 실수) 나는 두 인덱스를 출력한 건 100번을 돌려주지 않음. 이건 그럼 딱 2개의 인덱스를 100번 바꾸는 꼴인데 그러면 의미가 없지 ㅎㅎ

#시도 2  - 틀림
- 마지막 최종 출력 때 if문으로 예외 처리해줌으로서 for문이 한 줄 이상이 되었으니 -> 소괄호!! 
- 인덱스 랜덤 출력할 때 rand.nextInt(); 라고 적어줬는데 이러면 어느 숫자나 랜덤으로 올 수 있겠지. 인덱스 범위 넣어주는 개념으로 꼭 넣어주기


 

#시도 1  -  틀림
- if 뒤에 소괄호 안 함
- 무의식적으로 문제에 나온 숫자(10) 적으면 안 됨
- if 뒤에는 ; 쓰는 거 아님


Q. 질문
- int [] nums = new int [10]; 로 하면 -> 결과가 0, 0, 0, 0...이 나옴
- int [] nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; 로 하면 -> 결과가 정수가 채워져서 제대로 나옴. 
-> 위에 문제랑 마찬가지. 

 

 

-> 문제 수정. 2개 인덱스 랜덤으로 뽑아서 100번 위치 이동하는 것도 추가 

#시도 1  -  틀림
- 무의식적으로 문제에 나옹 숫자(10) 적으면 안 됨
- 나는 두번째 if 식은 nums[i+1]>nums[i+2]면 바꿔주라고 썼는데... 
  -> 맨 뒤에 큰 거 보내준거 빼고는 앞에 엉망이니까 계속 nums[i]>nums[i+1] 해주면 되는 것
- for (조건식 j 썼으면) -> 그 안의 조건식 '식'에서는 j 활용해야 한다는 거


 

 

for문, while문 다 작성해보기, 큰 따옴표 있게 작성해보기

 

#시도 1  -  틀림 
- names/.text라고 함


지금 내가 다른 공간에 class를 열어서 res 파일을 찾을 수 없다고 나오는데... 파일 탐색 

문제 3

#시도 1  - 틀림
- 정해져있을 때 문자열 쓰는거 헷갈려했음
- "" 출력하는거 헷갈려했음
- (같은 실수) 랜덤으로 출력할 때는 범위! 지정해주기
- 그리고 인덱스!를 출력해주는데 왜 nextLine이겠어~
  nextLine은 문자열 그대로 출력해주는거 (random이랑은 안어울릴 수도. 수직으로 글자 써져있는거에서는 해보기)
- 마찬가지로 인덱스 출력인데 왜 %s겠어~ 근데 %d로 해도 숫자가 나오고, %s로 해도 숫자로 나오긴 함
- 마지막 예외 처리에서는 if만 있으면 되는데 ... for (int i=0; i<6; i++) 이라고 해버렸네

#시도 2  - 틀림
- (같은 실수) 변수 선언할 때는 특별한 식이 있지 않는 이상 = 쓰지 말고 그냥 같이 써서 선언해주기
  String = temp; 라고 함
- (같은 실수) "" 출력하는 법
  1) 먼저 전체 식을 감싸는 "" 부터 써주기 (자동으로 두개가 떠서 이걸 나중에 하면 헷갈린다)
  2) 차례대로! \"    %s    \"   를 써주기

문제 4,5 

#시도 1  - 틀림
- (같은 실수) 입출력을 한 줄에 쓰려는 시도... 식이 한 줄로 딱 있는 경우 외에는 노노.
  -> if로 바꿔주고 {}
- 출력 함수 안 씀 
  인덱스들 바꿔주고, 제일 순서대로 입력!은 했지만 출력은 안한 상태인 것

#시도 2  - 틀림
- (같은 실수) 예외 처리 하면 for문 한 줄 아니니까 {} 중괄호 쓰기
- %s 인데 $s를 쓰면 $s만 나온다는거... 

 

 

#시도 1  -  틀림
- 파일 경로 같더라도 res/ 빼먹으면 안되지~
- Scanner 공식에서 (); 붙여야 한다는 거
- Scanner  () 여기에는 어느 파일에서 읽어오는지 써줘야 한다는거
- 나는 그냥 names[i]=Line.split(","); 해줬는데 1) 앞에 변수 선언 해줘야! 2) names[i] 라고 명명지으면 그 방에만 들어가는거니까 저렇게 i 명명 지으면 안 됨 (인덱스 형태도 아니고)
- trim 기능 빼먹음
- scan. fis 각각 닫아주기

이건 4번째 column을 구하라는 문제였음

#시도 1  -  틀림


System.out.printf("%d", total); 대신에 뭘 넣어줘야 하는지

 

제주 검사진행자수 column이 몇 번째인지 주어지지 않은 문제인 것

#시도 1  -  틀림

17일

-> 문자열형, ", , , , , " (마지막에는 , 없는 형식으로) 

#시도 1 - 틀림
- 나는 읽고 split 하는 것도 다 for 문으로 돌려줬는데, split이 불러온 '문장을' 쏙쏙쏙 넣어준다는 것에서 for문을 돌릴 필요가 없다. 근데... 넣어주는 것까지 저절로 해주는건가. 

#시도 2 - 암기 성공

/// 
#시도 1 - 암기 성공


*보충 설명*
split 함수
-> 참 편리한 아이. 방이 몇 개라고 굳이 위에서 선언해주지 않아도 가져오는 파일에 따라서 저절로~! 방을 만들어준당

for문으로 출력시 [j][i] 형태로

#시도 1 - 틀림
- [2][0]이라고 적었음. [0]이라고 적으면 안 됨 (자릿수가 그렇게까지는 필요없다고 이해하면 쉽지~)
  여기서의 2는 '2줄'
- 나는 split해서 넣어주는 공간을 rows[1][], rows[2][] 라고 각각 적었는데 
  어차피 위에서 [2][] 라고 해줬으니 뒤에는 적어줄 필요없는듯?
  그리고 여기에서는 첫째줄, 둘째줄이니 1,2라고 하면 안 됨
- 프린트부분에서 어떻게 적어줄줄을 몰랐음. rows[0][i] 는 -> 첫째줄에서 / 각각 위치 i 라고 이해하면 쉽다!

#시도 2 - 암기 성공
- "%d"가 안되는 이유는 2020-10-01 이런건 숫자만은 아니기에
 

 

3번을 가장 먼저. 

#시도 1 - 틀림
- hasNextLine 함수
- while문
- 지역화

#시도 2 - 틀림
- 자꾸 읽어드리는걸 line에서 함. scanner 함수 기준으로 해야지.
- rows[count][i] = line.split(","); 라고 적었는데 이러면 안됨. 쏙썩쏙쏙 넣는 곳은 row 부분이니까 i로만 


18일 

1번 (한 줄은 빼주세요 - 조건 추가. 직접 빼지 말고 count--; 사용하라는 것)

#시도 1 - 틀림
- while문에서 index를 어디에 위치시켜줘야 하는지 갈피를 잡지 못함
- (★같은 실수) Scanner 함수에서 hasNextLine함수라는거
- (같은 실수) hasNextLine();형태임 (나는 또 ()를 빼먹음)

#시도 2 - 암기 성공

* 보충 설명
- while문 () 안에가 계속 있을 때까지 읽어주고/count 0부터 시작해서 계속 더해주는구나
-> 그리고 더 이상 읽어줄게 없으면 while문을 나와서! 출력하는구나

 

2번

#시도 1 - 틀림
- 모든 레코드니까 [][] 둘 다에 변수가 있어야겠지
- line.splite() 한 걸 rows 에다가 넣어주는 건지, rows [count][]에다가 넣어주는건지... 
-> 결론은 rows[i]에다가 넣어주는건데, 1차원으로 써줬으니 1차원으로 생각하면 된다. 한 줄에 쏙쏙쏙 넣어주는구나~ 
-> 아래다가 [j][i] 이렇게 쓰게 되면 아까 쏙쏙쏙 나왔던걸 문자 맞줘주면 돼지~ 
- 파일 닫아주는거 안해줌
- System.out.ln도 for문 안에서 돌려줄 때가 있다는 거~ 

#시도 1 - 암기 성공

 

3번 (1) 몇 번째 column에 있는지 (정확히 "제주 검사진행자수")

#시도 1 - 틀림
- .equls (compareTo랑 헷갈리지 말기) 
- '검사진행자수'랑 비교하려는건 알겠는데 그럼 읽어온거+[] 방에 있는걸 가지고 비교를 해줘야지

#시도 2 - 틀림
- '10'이란 수는 직접 센거고, row도 몇 개인지 모를 때는 length 활용
- for > if > 다음에 바로! 프린트가 나오는 경우는 없는 것으로 생각해도 될 듯? 
  조건이 만족하면 쓰고 싶은 조건 적기 -> x = i 라던가

#시도 3 - 틀림
- if 안의 조건식 (i를 빠뜨리는건 정말 생각 안하고 코드를 적었다는 반증...)

#시도 4 - 암기 성공

3번 (2) 검사진행자 누적 수

#시도 1 - 암기 성공 :) 

 

4번

#시도 1 - 틀림
- Integer.parseInt !!! 
Q. 질문: max에는 제일 큰 거를 담아야지~! 그래서 이거랑 비교해서 current가 더 크면 current = max 로 대체해야지~ 라고 속으로... 생각해줘도 되는건가.... 왜 max 함수에는 제일 큰 거를 담는다는 선언?을 안해주지 ㅠㅠㅠㅠ 

#시도 2 - 틀림
- (같은 실수) Integer.parseInt !!!

count-1 을 해도 마찬가지 / 147이 어디서 나왔나 보니 맨 마지막 행과 그 마지막 전 행이다... 

 

 

 

5번

#시도 1 - 틀림
- rows열 출력은 문자열이니 %d가 아니라 뭐다? 
- int index; 해서 오류났음 -> int index=0; 

#시도 2 - 암기 성공

 

6번 (1) "제주 확진자" 가 몇 번째 column에 있는지

#시도 1 - 암기 성공

6번 (2) 본 문제

#시도 1 - 틀림
- 프린트도 for문 안으로

 

 

7번

#시도 1 - 틀림


19일

 

8번

 

9번

 

10번

 

 

 

 

 

 

 

 

 

728x90
반응형

'수업 일지 > Java' 카테고리의 다른 글

추상화 정리 (java)  (0) 2021.04.08
객체지향 정리 (java)  (0) 2021.04.07
따옴표 정리  (0) 2021.03.12
변수 정리  (0) 2021.03.08
10일. Java - 파일 읽기 , 비트 연산자  (1) 2021.03.04

관련글 더보기