-
(국비교육) 6 - 구구단 출력하기 + %활용문 + 배열개발/국비교육 2023. 6. 8. 17:50
■ 구구단 출력하기
* 2단 출력하기
2단을 출력하기 위해서는 반복되는 i 를 무엇을 넣을지 생각하면 좋다.
계속해서 1 씩 증가한 1 ~ 9 까지의 숫자를 곱해누므로 i 를 1부터 9로 설정한다.
System.out.println("2 x " + i + " = " + (2 * i));
로 표현할 수 있는데 이를 간단하게 표현하는 방법이 바로 아래와 같은 표현이다.
System.out.printf("2 x %d = %d\n", i, (2*i));
※ 활용문 이용하기
%활용문을 사용하면 보다 빠르고 간편하게 나타낼 수 있다.
* %
%d = 정수 \n = 줄바꿈
%c = 문자 %f = 실수
%b = 불리언 %o = 8진수
%s = 문자열 %x = 16진수%활용문을 사용하기 위해서는 printf 를 사용해줘야 한다.
%활용문을 쓴 다음에 해당 뒤에 들어갈 값을 넣어주면 된다.
EX)
String name = "홍길동";
System.out.printf("제 이름은 %s 입니다.\n", name);
문자열일 경우 %s 를,
실수일 경우 %f 를 사용한다. 여기서 소수점 2번째 자리까지만 표시하고 싶다면 %.2f 를 쓰면 된다.
정수형은 %d 로 표시한다.
%,d 를 사용하면 천단위로 끊어서 표시 가능하며, %10d 는 자릿수 10자리 오른쪽 표기로 보여준다.
%10s 하면 10자리 오른쪽으로 맞춰진 것을 볼 수 있다.
%c 로 넣으면 아스키코드로 A가 나온다.
%10d 는 오른쪽 정렬, %-10d 는 왼쪽 정렬, 마지막으로 %010d 는 0000으로 채운다.
> 혼자 코딩실습 (2단문 출력)
2단을 출력하기 위해서는 먼저 앞자리 2단만 반복될 수 있도록 i 를 설정해준다.
j의 경우 1개씩 증가하며 9 까지 증가하므로 1 ~ 9 까지 범위를 설정해준다.
이를 식으로 출력해주면 다음과 같이 나온다.
* 2단부터 9단까지 출력하기
2단부터 9단까지 출력하기 위해서는 i 의 값을 9까지 출력할 수 있게만 변경해주면
2단부터 9단까지의 값을 알 수 있다.
j 의 값은 1부터 9까지 반복돼야 함으로 마찬가지로 설정해준다.
여기서 우리가 배운 표현 방법을 활용하여 코딩하면
System.out.printf("%d x %d = %d\n", i, j, i*j);
로 나타낼 수 있다.
> 혼자 코딩하기 (2 ~ 9단 출력)
1)
%활용문을 배우기 전 혼자 코딩 실습하여 각각 표시하도록 코딩했다.
2)
% 활용문을 배운 후 직접 %d를 활용하여 혼자 코딩했다.
* 구구단 옆으로 찍기 (2 ~ 9단)
\t 는 tab 과 같다.
이를 넣어주면 옆으로 찍히고, 우리는 심화 학습으로 i 와 j 를 변경해주는 것도 실습해본다.
■ 배열
- 배열 : 같은 데이터타입이 줄줄이 있습니다. (같은 타입, 동일관리, 주소호출)
- 배열선언 : 데이터타입[ ] + 변수명 = new int[공간갯수]
EX) int 타입의 10개 공간을 만들기
int[ ] arr01 = new int[10];
- index : 값이 저장된 위치
- 출력 : 변수[위치, index, 번지] 를 적어줍니다.
EX)
System.out.println(arr01[0]);
※ index 는 int 형이다.
- 입력 : 변수[위치] = 값;
EX)
arr01[0] = 100;
arr01[1] = 10;
arr01[2] = 50;※ String 은 예약어가 아니기 때문에 보라색 표시가 아니다.
- .length : 길이 출력 (int 타입)
arr01 배열을 호출을 반복문을 통해서 해보자.
for (int i = 0; i < arr01.length; i++) {
System.out.println(arr01[ i ]);
}우선 배열 호출은 arr01[ ] 로 해주면 된다.
여기서 배열 호출을 반복할 것이므로 반복하는 i 를 arr01[ i ] 넣어준다.
arr01 의 [ ] 안의 숫자는 10인데 즉 arr01 의 배열 길이는 10 이다.
여기에서 -1 하면 마지막 번지 길이를 알 수 있다.
즉 arr01 의 마지막 번지 길이는 arr01[ 9 ] 이다.
배열의 길이는 .length 로 구할 수 있다.
※ 배열의 마지막 번지 길이
배열의 마지막 번지 길이는 배열 길이 - 1 이다.
즉 arr01 의 경우 int[ ] arr01 = new int[ 10 ]; 으로 생성되었는데,
여기서 마지막 번지의 길이는 배열 길이 10 에서 -1 을 한 9 이다.
arr01[0] arr01[1] arr01[2] arr01[3] arr01[4] arr01[5] arr01[6] arr01[7] arr01[8] arr01[9] -> 0 ~ 9 까지 총 10개
> 혼자 코딩실습 (arr01 배열 반복문으로 호출)
배열 전체를 출력하는 것은 Arrays 클래스 사용하면 된다.
- 초기값 = 객체는 객체 생성과 동시에 초기값을 가집니다.
- 정수 = 0, 실수 = 0.0, 객체 = null,
- char = ( ), boolean = false예시를 보면 정수형 int, byte, short, long 은 0 을 출력한다.
실수형 float 은 0.0 출력, char 은 공란 출력, boolean은 false 를 출력한다.
이외 String, Scnner, Object 객체는 null 값을 출력한다.
https://ko.wikipedia.org/wiki/%EB%B0%B0%EC%97%B4
■ 배열(Array) 종합 정리
배열은 객체이다. 그리고 객체는 기본적으로 속성과 메소드를 가지고 있다.
이 중 배열만 유일하게 속성만 가지고 있다.
배열은 동일한 타입의 데이터를 하나의 묶음으로 관리하기 위해 사용되는 데이터 구조이다.
예를 들어 int 타입의 변수가 100 가 필요하다고 한다면?
우리는 100개의 다른 이름, 다른 변수를 만들어야 한다. 시간도 많이 걸리고, 관리하기 어렵다.
이를 보완하기 위해서 사용하는 것이 배열이다.
배열은 객체라고 했기 때문에 객체의 속성과 메소드를 사용해서 배열을 관리한다.
배열은 유일하게 속성만 가지고 있다.
배열의 속성 중 배열의 길이를 나타내는 length 가 있다.
객체의 속성과 메소드 등을 호출할 때는 .(점) 을 사용합니다.■ 역순으로 배열넣기
역순으로 배열을 넣기 위해서는 i 값에 배열 마지막이 들어가야 한다.
따라서 arr01[ 10 ] 이였으므로 i 값은 9 가 된다.
i 값이 점점 줄어들어 0 까지 선언돼야 하므로 i >=0 으로 조건식을 설정해 주고,
이를 배열에 대입해주는 식을 만들어준다.
arr01[i] = ?;
arr01[9] = 1 이 나오도록 설정해야 한다.
따라서 i 가 반복되면서 1이 나올 수 있게 만들어주는 10 - i 를 넣어준다.
> 혼자 코딩실습
https://codingdojang.com/scode/408
■ 1차원의 점들 중 가장 거리가 짧은 쌍을 출력하는 함수 작성하기
(단, 점들의 배열은 모두 정렬되어있다고 가정한다.)
문제 :
1차원의 점들이 주어졌을 때, 그 중 가장 거리가 짧은 것의 쌍을 출력하는 함수를 작성하시오.
(단 점들의 배열은 모두 정렬되어있다고 가정한다.)
예를들어 S = {1, 3, 4, 8, 13, 17, 20} 이 주어졌다면, 결과값은 (3, 4)가 될 것이다.먼저 문제에서 정의돼 있는 값을 map 변수 배열에 넣어보자.
int[ ] map = { 1, 3, 4, 8, 13, 17, 20 };
0 1 2 3 4 5 6
이를 구하기 위해 먼저 첫 번째 숫자와 끝 숫자 마지막으로 두 수의 차이 정의가 필요하다.
int fir = 1; //시작 숫자
int sec = 3; //끝 숫자
int temp = map[ 1 ] - map[ 0 ]; //두 수의 차이temp의 값은 두 번째 값 3에서 첫 번째 값 1을 뺀 값이 설정된다.
그리고 난 후 반복문에서 반복될 값 i 를 설정해줘야 한다.
문제에서 점들의 배열은 모두 정렬돼 있다고 했으니
우리는 다음 값에서 그 전값을 빼주는 식으로 값 비교를 할 수 있다.
그리고 이 값이 temp 값보다 작다면 새롭게 배열에 넣어줘 대체를 해주면 되는 것이다.
이를 반복문으로 나타내면
for (int i = 0; i < map.length - 1; i++) {
if(map[ i + 1 ] - map[ i ] < temp) {
temp = map[ i + 1 ] - map[ i ];
fir = map[ i ];
sec = map[ i+1 ];
}
}System.out.println("두 거리의 차가 가장 작은 숫자는");
System.out.println(fir + ", " + sec);
여기서 map.length - 1 을 해주는 이유는 우리가 밑에서 map[ i+1 ] 을 이용하는데,
그렇게 되면 아래에서 map[ 7 ] 으로 배열의 범위를 벗어나는 경우가 발생해 오류가 난다.
> 혼자 코딩실습 (1차원 점 중 가장 짧은 거리)
■ A - Z 저장하는 배열 코딩하기
문제:
알파벳을 A - Z 까지 저장하는 배열을 만들어주세요.
(char 하나에 한 글자씩 / for문 이용)먼저 알파벳을 저장할 배열을 만들어 준다.
배열을 만들 때 A to Z 의 값의 갯수가 총 26 개 임으로 다음으로 설정해준다.
이후 반복문을 통해 배열안에 값을 넣어주는데,
반복되는 값은 배열의 숫자와 그에 대한 값이므로 이를 i 와 연관지어 만들어준다.
i 의 값은 알파벳 시작 A 의 아스키코드인 65 로 설정하고,
조건식은 Z 가 아스키코드 90 임으로 그보다 1개 큰 91 보다 작다로 설정해주고 증감 처리해준다.
이제 새롭게 배열의 값을 지정해 줘야 하는데 i 가 65 시작이므로,
배열[ 0 ] 에 대한 선언이 필요하므로
alpha[ i-65 ] = i 즉 A 값으로 설정하고 Z 까지 설정해주면 된다.
여기서 중요한 점은 i 는 int 값이고 alpha 는 char 값이다.
따라서 큰 값이 작은 값에 대입되기 떄문에 cast 작업 처리를 반드시 해줘야 한다.
이후 배열 전체를 출력하는 Arrays 클래스를 통해 값을 구해준다.
> 혼자 코딩실습 (A - Z 저장하는 배열 코딩하기)
1)
혼자 코딩 실습을 할 때는 i 값을 0으로 설정했다.
이에 따라 따라서 alphabet[ i ] 즉, alphabet[ 0 ] 의 값이 아스키코드 65가 나올 수 있도록
i 값에 65를 더한 후 cast 처리를 해준다.
2)
집에서 코딩을 한 번 더 실습했다.
첫 혼자 코딩 시 변수값을 대문자로 설정했던 것을 수정했다.
A ~ Z 까지 배열로 담아 출력하기/java — songdev (tistory.com)
■ 암호화 문장 만들기 (3칸 띈 알파벳 출력시키기)
암호화할 문장을 입력받고 출력하기 위해서는 먼저 Scanner 를 이용하여 입력할 수 있게 설정해준다.
설정했다면 input 값을 문자열로 저장할 예정임으로 String 으로 자료형을 설정해주고 선언한다.
이후 사용자가 입력할 수 있도록 println 과 print 로 설정해준다.
이후 입력받을 수 있도록 input 값을 String 으로 받는 sc.nextLine(); 으로 설정해준다.
우리는 출력 문자를 모두 대문자로 표현할 예정임으로 모두 대문자화 하는 input.toUpperCase() 를 사용한다.
※
- sc.nextLine() : 엔터치기 전까지 다 가져올래요. (String)
- input.toUpperCase() : 입력받은 문장을 모두 대문자화 하기
- input.toLowerCase() : 입력받은 문장을 모두 소문자화 하기
이제는 배열을 설정해준다. 이를 위해 toCharArray() 를 사용하는데,
toCharArray() 는 문자열을 한 글자씩 쪼개서 이를 char 타입의 배열에 집어넣어주는 메소드이다.
따라서 chIuput 배열을 생성하고 출력하면
[ H, E, L, L, O ] 로 출력됨을 확인할 수 있다.
여기서 우리는 그냥 알파벳 출력이 아닌 입력한 알파벳의 3번째 뒤 알파벳을 구하고자 한다.
이를 위해서는 우리가 구한 배열에서 3번째 뒤를 설정해줘야 한다.
반복되는 배열을 i 로 설정하고, 이 배열 자체에 3을 더한 값을 구하면 된다.
for (int i = 0; i < chInput.length; i++) {
System.out.println( (char) (chInput[ i ] + 3) );그러나 이렇게 설정하는 경우 X, Y, Z 입력시 문제가 생긴다.
따라서 우리는 X, Y, Z 입력 시 A, B, C 로 돌아가게끔 설정해줘야 한다.
이를 for문과 if 조건을 통해 설정할 수 있다.
X 값부터 우리가 원하는 알파벳이 넘어가기 때문에, 우리는 chInput[ i ] + 3 의 값이 'X' 를 넘어간다면,
A 값으로 돌아가는 값 chInput[ i ] - 23 을 해준다.
왜냐하면 A 부터 Z 까지 26개 값에서 3개를 더한값이 A 가 돼야 함으로 -23 을 해주면
이후 chInput [ i ] + 3 을 했을 때 26으로 돼서 A 값이 나오기 때문이다.
그리고 넘지 않는 값은 그대로 chInput [ i ] + 3 로 설정해준다면,
어떤 값을 입력 받아도 알파벳 내에서 나올 수 있다.
> 혼자 코딩실습
1)
학원에서 혼자 실습
2)
집에서 혼자 실습
* 혼자 코딩실습 (X, Y, Z 넘기기)
1)
학원에서 혼자 실습
2)
집에서 혼자 실습
■ String 자르기
- .length : 길이 출력
- .charAt : String 으로 저장된 문자열 중에서 한 글자만 선택해서 char 타입으로 변환
EX) charAt(4) 를 하면 o 가 출력
반복문을 통해 word.charAt(i) + 3 을 하면
charAT(0) 은 H 가 나오고 여기서 3 을 더한 값을 char 값을 해주므로 K 가 나온다.
charAT(1) 은 e 가 나오고 여기서 3 을 더한 값을 char 값을 해주므로 h 가 나온다.
- .substring : string 잘라서 원하는 만큼 가져오기
EX)
.substring(2) 는 2부터 끝까지 출력 -> llo
.substring(2, 4) 는 2부터 4-1 까지 출력 -> ll
'가나다라마법사' 에서 마법사만 출력하기 위해서는
0 1 2 3 4 5 6
시작 4번째 마부터 사 6 보다 1큰 7로 즉 .substring(4, 7) 로 설정한다.
해당 글자의 .length() 는 7이다.
※ 시험문제 참고 (23-06-08 / 1시간 시험 / 60점 이상)
1. TCP/IP(Transmission Control Protocol/Internet Protocol) 프로토콜 스택 구성
OSI 7 Layer를 실무에 활용하는 기능 중심으로 4계층으로 구조화하고, 각 그룹 에서 활용되는 프로토콜군을 정리한 네트워크 통신 구조 모델
2. 라우팅
데이터가 송신지에서 수신지까지 이동하는 경로를 형성하는 것을 라우팅이라고 하며,
크게 정적 라우팅과 동적 라우팅으로 분류
1) 정적 라우팅(Static Routing) 네트워크 관리자가 직접 라우팅 테이블에 라우팅 경로를 입력하여 관리하는 방법을 정적 라우팅이라고 한다.
2) 동적 라우팅(Dynamic Routing) 네트워크 관리자가 직접 개입하지 않고 라우터 간에 정보를 교환하면서 라우팅 경로 를 관리하는 방법을 동적 라우팅이라고 한다. 동적 라우팅은 거리 벡터 라우팅 알고 리즘과 링크 상태 라우팅 알고리즘을 사용한다.
3. 미들웨어1) 미들웨어 정의
하나의 시스템에서 다양한 목적의 응용소프트웨어가 동시에 수행되거나
복수 시스템 의 응용소프트웨어가 서로 연계되어 수행되는 경우에도 안정적으로 실행될 수 있도록
운영체제와 응용소프트웨어 사이에서 다양한 기능을 지원하는 소프트웨어
2) 미들웨어 주요기능
미들웨어는 분산 시스템 SW, IT 자원 관리, 서비스 플랫폼 및 네트워크 보안 등의 기능을 포함
3) 미들웨어 역할 예시
4. 데이터베이스 개념데이터베이스는 공용으로 활용하기 위해 통합하여 저장한 운영 데이터의 집합
※ 데이터란?
데이터는 관찰이나 측정으로 수집한 사실(Fact)을 수치 또는 문자 형태로 표현한 최소 단위의 값
5. 데이터베이스 특성 ★6. 관계형 데이터베이스 종류 3가지
- MYSQL
- PostgreSQL
- MariaDB
- Microsoft SQL Server
- Oracle Database
※ 관계형 데이터 베이스는?
관계형 데이터베이스(RDB)는 테이블, 행, 열의 정보를 구조화하는 방식입니다. RDB에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있어, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있습니다.
7. DML에 대해 서술DML(Data Manipulation Language, 데이터 조작어)
데이터를 조작하는 언어로 데이터를 조회하거나 입력, 수정, 삭제하기 위한 목적으로 데이터베이스 관리자나 응용소프트웨어 개발자가 주로 사용한다.
https://www.yumpu.com/xx/document/read/54510109/-pdf
■ 실제 출제된 문제
1. 관계형 데이터베이스 종류 3가지 이상 서술하시오. (10점)
- MYSQL
- PostgreSQL
- MariaDB
- Microsoft SQL Server
- Oracle Database
2. 관계형 데이터 베이서 명령어 종류 중 DML 에 대하여 서술하세요 (10점)
- DML(Data Manipulation Language, 데이터 조작어)
데이터를 조작하는 언어로 데이터를 조회하거나 입력, 수정, 삭제하기 위한 목적으로 데이터베이스 관리자나 응용소프트웨어 개발자가 주로 사용한다.
- select / insert / update / merge / delete
3. 아래에서 설명하는 것은 무엇인가? (10점)
- DDL(Data Definition Language, 데이터 정의어) 데이터를 정의하는 언어로 데이터베이스 스키마 구조를 변경하는 목적으로 데이터베 이스 관리자나 설계자가 주로 사용한다.
4. 디스크 운영 체제중인 하나인 도스에서 해당 디렉터리에 들어있는 디렉터리를 확인하거나 특정 디렉토리 확인하기 위한것은?
- 디렉토리 정보 보기 : dir
5. HTTP 프로토콜에 대하여 서술하시오.
HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜입니다. 사용자가 웹 사이트를 방문하면 사용자 브라우저가 웹 서버에 HTTP 요청을 전송하고 웹 서버는 HTTP 응답으로 응답합니다.
6. 웹브라우저 종류 3가지 이상 서술하시오.
- Microsoft Edge
- Chrome
- Firefox
- Safari
- Opera
7. 자바기반 통합 개발환경 Tool로 많이 사용되는 것은?
- 이클립스
- 인텔리제
8. command 창에서 컴파일 후 실행
- javac [파일명].java 까지 있어야 정답
ex) javac Ex01.java
- 실행은 java [파일명]
ex) java Ex01
9. 자바 버전 확인할 수 있는 명령어는?
- java -version
10. 다음을 설명하는 것은 무엇일까요?
* 아파치 소프트웨어 재단에서 개발한 서블릿 컨테이너(또는 웹 컨테이너)만 있는 웹 애플리케이션 서버이다.
* 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공
* 관리툴을 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수도 있다.
* HTTP 서버도 자체 내장하기도 한다.
- 아파치 톰캣
* 요청사항 (찾아보기)
- IP ADDRESS
- DNS 서버
- 핑
- SMTP : 메일 전송
- FTP :
- HTTP :- 웹 애플리케이션 서버 : (WAS) 계열 중 하나인 톰캣 이용할 예정
- EAI
- TPM
- PostgreSQL : 코끼리 모양- 데이터베이스 관리시스템(DBMS: Database Management System) ★
- RDBMS(관계형 데이터베이스)
- NOSQL(비관계형 데이터베이스)_MONGO DB
- E-R 데이터 모델 구성요소
- SQL 구문
- DDL 중요
- DML (데이터 조작어 종류 중요)
- DCL'개발 > 국비교육' 카테고리의 다른 글
(국비교육) 8 - 알고리즘 + 제어문 + do while + 숫자 랜덤뽑기 + 로또 (0) 2023.06.12 (국비교육) 7 - 랜덤 + 2차원 배열 + 로또뽑기 + N자 그리기 + 중복값 제거 (0) 2023.06.09 (국비교육) 5 - 메소드 호출 + if, for 문 + 별찍기 + 10진법 2진법 나타내기 (0) 2023.06.07 (국비교육) 4 - 자바 연산자 + 조건문과 반복문 + 2의 배수 만들기 + Fizz Buzz + 논리연산자 + 비트연산자 + 제어문 (0) 2023.06.05 (국비교육) 3 - 변수와 자료형 (0) 2023.06.02