IT 자격증/정보처리기사

[정처기] 정보처리기사 실기 Java 편 풀이 해설

SOIT 2024. 7. 23. 18:17

 

1. 다음 출력 결과를 작성하시오.

public static void main(String[] args){
  Set a = new HashSet();
 
  a.add(7)
  System.out.println(a);
 
  a.add(5)
  System.out.println(a);
 
  a.add(5)
  System.out.println(a);
 
  a.remove(5)
  System.out.println(a);
 
  System.out.println(a.size());  
 
}

 

📚 HashSet (): 

더보기

[7]

[5,7]

[5,7]

[7]

1

 

해시셋은 중복된 원소를 허용하지 않는 성질은 가진 클래스이며, 순서에 구애받지 않습니다.
(약간 파이썬의 세트와 같음)


5가 삽입되었을때 중복이 되므러 추가되지 않는것이 포인트입니다.

 

 

2. 다음은 2개의 정수를 입력받아 합을 출력하는 Java 프로그램이다. 괄호에 공통으로 들어갈 가장 적합한 코드를 작성하시오.

import java.util.(  );
 
public class Test {
 
  public static void main(String args[]){
    (   ) scan = new (   ) (System.in);
    int a = scan.nextInt(); # Scanner 클래스의 객체 변수 scan을 키보드로 입력받을 수 있도록 생성합니다.
    int b = scan.nextInt();
    System.out.printf("%d", a +b);
  
  }
}

 

📚 Scanner

더보기

Scanner

 

 

Scanner 클래스의 객체 변수 scan을 키보드로 입력받을 수 있도록 생성합니다.

 

 

3. 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 작성하시오.

public class Impl{
 
  public static viod main(String args[]){
  int a = 12, b = 5, sum = 2;
  b *= a /= 4;
  sum += ++a * b-- / 4;
  System.out.printf("%d", sum);  
  
  }
}
더보기

각 변수들을 초기화하고,

1.  b는 (12/4) * 5 = 15가 됩니다. - 변수들의 값을 대입하면 확인할 수 있습니다.

 

2.  sum은 (13*15) / 4 + 2 = 17이 되게 됩니다.- ++a는 전치 증가 연사자라 바로 12에서 13로 반영이 되지만,    b--는 후치 증가 연산자라 라인이 끝난 뒤에 반영되기에 여기서는 반영되지 않습니다. 

 

 

4. 다음 Java로 구현된 프로그램을 분석하여 그 실행 결과를 작성하시오.

public class Impl{
 
  public static viod main(String args[]){
  int a = 5, b = 9, c;
  c = b % 5 < 5 ? 1 : 0;
  c = c | c << 3;
  c = a < 5 || c >= 10 ? c - a : c + a;
  System.out.printf("%d", c);
  
  }
}


 

📚 for i in myVal.a:       i[0]

더보기

SIKDDP

 

시프트가 논리 연산자보다 우선이다

 

그래서
c = c | c << 3 = 1 | 1 <<3
👉 1 <<3 = 1000 = 8

👉 1 | 8 = 1001 = 9

5+9 = 14

 

 

 

5. 다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

a = "What's this?"
print("%-10.4s" % a)
print("%10.4s" % a)

 

📚 %-10.4s

더보기

What      

      What

 

%s는 문자열을 추출하는 서식 문자열이고,

 

-10.4s에서 -는 왼쪽부터 출력하라는 의미이며,

10은 10자리를 확보하고,

4는 a에 저장된 문자열 "What's this" 중 앞의 4글자만을 출력하라는 의미이므로 결과는 뒤에 6칸 공백이 생깁니다.

 

두번째 답도 비슷하게

10.4s에서 +는 오른쪽부터 출력하라는 의미이며,
앞의 4글자만 출력하고 마지막 6칸 공백이 생기는 방식으로 설정되었습니다.

 

💡 %.3f 을 생각해요.

소수 출력에서 많이 봤을만한 표기입니다.

소수점 뒤 반올림하여 3자리까지 출력입니다.

 

➡️ %(-/+)10.4s문자열이니까, 반올림은 아니죠?!그럼 .4는 앞부터 출력 개수이고, 10은 총 출력 개수라고 유추할 수 있어요-/+ 는 왼쪽/오른쪽 부터 출력을 의미한다는 거~! 암기

 

 

 

6. 다음 Python으로 구현된 프로그램을 분석하여 그 실행 결과를 쓰시오.

a = [[1,1,0,1,0],
     [1,0,1,0]]
tot,totsu = 0, 0
for i in a:
    for j in i:
        tot += j
    totsu = totsu + len(i)
print(totsu, tot)

 

📚 2차원 리스트에서 중첩 for문, 개수

더보기

9 5

 

 

i는 a의 [[1,1,0,1,0],[1,0,1,0]] 에서 순차적으로 들어갑니다. (즉, 크게 2번 반복)

 

1.

for 문 (1)

i [1,1,0,1,0] 

    for 문(2)

    j에 i의 각 요소 1,1,0,1,0
   tot  tot(0) + j 요소의 합이 들어감 # 3 

   totsu  totsu(0) + len(i)로, len(i)는 리스트의 개수 5개 # 5 

 

2.
for 문 (2)

i [1,0,1,0

    for 문(2)

    j에 i의 각 요소 1,0,1,0
   tot  tot(3) + j 요소의 합이 들어감 # 5 

   totsu  totsu(5) + len(i)로, len(i)는 리스트의 개수 4개 # 9 

 

 

print(totsu, tot) 를 하면, 마지막 9 5 가 순차대로 출력됩니다.

 

 

 

💡참고로, print에서

print(totsu, tot) 할 때 변수를 " , " 로 연결하여 출력할 경우 한칸 띄어쓰기 됩니다.

 

💡참고로, print(len(j)는 하지 못합니다.
i는 리스트 이며, j는 정수이기 때문입니다.

len은 리스트 길이 구할 때 사용합니다.

 

 

 

7. 다음 Python 코드는 "30, 200"을 출력한다. 빈 칸 ( 1 ), ( 2 )에 알맞는 코드를 차례로 쓰시오.

(  1  ) Calculator:
    (   2   ) add(self,x,y):
        return x + y
    (   2   ) mul(self,x,y):
        return x * y
 
cal = Calculator()
x = cal.add(10,20)
y = cal.mul(10,20)
 
print(x, y)

 

📚 함수 키워드

더보기

class, def

 

 

Python에서 클래스는 class로, 함수는 def라는 키워드로 선언합니다.

 

 

7. 다음 Python 코드는 "30, 200"을 출력한다. 빈 칸 ( 1 ), ( 2 )에 알맞는 코드를 차례로 쓰시오.

lol = [[1,2,3],[4,5],[6,7,8,9]]
print(lol[0])
print(lol[2][1])
for sub in lol :
    for item in sub :
        print(item, end  = " ")
    print()

 

📚 2차원 리스트에서 중첩 for문, end = " "

더보기

[1,2,3]

7

1 2 3

4 5

6 7 8 9

 

lol의 [0] 인덱스 값 출력하고 1줄 내립니다. [1,2,3]

lol의 [2][1] 인덱스 값 출력하고 1줄 내립니다. 7

 

sub lol의 [[1,2,3],[4,5],[6,7,8,9]] 에서 순차적으로 들어갑니다. (즉, 크게 3번 반복)

 

1.

for 문 (1)

sub [1,2,3]

    for 문(2)

    item sub의 각 요소 1,2,3

   print(item, end = " ")   # 1,2,3 출력하고 개행(엔터)

 

2.

for 문 (1)

sub [4,5]

    for 문(2)

    item sub의 각 요소 4,5

   print(item, end = " ")   # 4,5 출력하고 개행(엔터)

 

3.

for 문 (1)

sub [6,7,8,9]

    for 문(2)

    item sub의 각 요소 6,7,8,9

   print(item, end = " ")   # 6,7,8,9 출력하고 개행(엔터)

 

 

 


 

본 글은 chobopark 님의 글을 인용하여, 공부한 글입니다. [참고 링크]

728x90