
모든 영문자를 대문자로 만드는 메소드
선택정렬은 각 셀을 왼쪽부터 오른쪽 방향으로 확인하면서 어떤 값이 최솟값인지 결정함
한 셀씩 이동하면서 현재까지 가장 작은 값을 변수에 저장함 현재 변수값보다 작은 값이들어있는 셀을 만나면
변수가 새인덱스를 가르키도록 값을 대체함
처음엔 인덱스 0 이 최솟값으로 변수에 들어간 후 한번의 패스스루를 거쳐 인덱스0을 최솟값으로 만들고
인덱스1부터 다시 반복함
선택정렬은 비교와 교환 두 종류의 단계를 포함함 N개의 원소가 있을때
(N-1)+(N-2)+(N-3)…의 비교를 실행함
교환은 한 패스스루 당 최소 한 번 일어남 버블 정렬과 달리 최악의 시나리오에선 빠짐없이 교환을 한번 해야함
선택 정렬은 버블 정렬보다 단계수가 반정도 적음 즉 두배 정도 빠름
선택 정렬은 버블 정렬의 반 즉 O(N^2/2)로 설명할 수 있지만 선 정렬은 빅오로 표현하면 똑같이 O(N^2)이다
빅 오 표기법은 지수가 아닌 수는 포함하지 않기 때문이다
빅오는 특정 시점부터 어느 유형이 다른 유형보다 속도가 빨라지는지 중요하지 않다
빅 오는 데이터가 많을때 한 알고리즘이 어떤 시점부터 빠르다는걸 보장하기 대문에
어떤 알고리즘을 서야하는지 대체로 알 수 있다
HyperTextTransferProtocol Secure
HTTP의 +보안(암호화)방식
서버와 클라이언트가 데이터를 주고받을때 누군가 훔쳐보지 못하게 암호화 해주는 통신 방식
입력 받은 대로 출력하는 프로그램을 작성하시오.
입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.
입력받은 그대로 출력한다.
Hello
Baekjoon
Online Judge
Hello
Baekjoon
Online Judge
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class BOJ_11718_PrintAsIs {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
}
입력이 들어오지 않을때 자동으로 종료 되는 로직 구현
아래 예제와 같이 새싹을 출력하시오.
입력은 없다.
새싹을 출력한다.
,r'"7
r-_ ,' ,/ \. ". L_r' ~\/
|
|
package string;
public class BOJ_25083_Sprout {
public static void main(String[] args) {
System.out.println(" ,r'\"7");
System.out.println("r`-_ ,' ,/");
System.out.println(" \\. \". L_r'");
System.out.println(" `~\\/");
System.out.println(" |");
System.out.println(" |");
}
}
\출력이나 “출력하는 문제
동혁이는 오래된 창고를 뒤지다가 낡은 체스판과 피스를 발견했다.
체스판의 먼지를 털어내고 걸레로 닦으니 그럭저럭 쓸만한 체스판이 되었다. 하지만, 검정색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다.
체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다.
동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.
첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다.
첫째 줄에 입력에서 주어진 순서대로 몇 개의 피스를 더하거나 빼야 되는지를 출력한다. 만약 수가 양수라면 동혁이는 그 개수 만큼 피스를 더해야 하는 것이고, 음수라면 제거해야 하는 것이다.
0 1 2 2 2 7
1 0 0 0 0 1
2 1 2 1 2 1
-1 0 0 1 0 7
package string;
import java.util.Scanner;
public class BOJ_3003_Chess {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] chess = {1, 1, 2, 2, 2, 8};
for (int i = 0; i < 6; i++) {
int piece = sc.nextInt();
System.out.print(chess[i]-piece+" ");
}
}
배열을 가지고 연산을 하는 문제
첫 번째 패스 스루일때 임시로 인덱스 1(두번째 셀의 값)을 삭제하고 임시 변수에 저장함
인덱스 1에 공백이 생기고 왼쪽에 있는 값과 비교 후 그 값이 임시 변수보다 크다면 오른쪽으로 시프트함
임시로 삭제한 값보다 더 작은 값을 만나거나 배열의 왼쪽 끝에 도달해야 시프트가 끝남 배열이 완전히 정렬될 때까지 반복함
삽입정렬에 포함된 단계는 삭제 비교 시프트 삽입 네종류가 있음
비교는 공백 왼쪽에 있는 값과 삭제된 값을 비교할 때마다 일어남
배열이 역순으로 되있는 최악의 경우 각 패스스루마다 모든 수를 비교해야함
1+2+3+…+N-1번의 비교가 일어남
원소가 N개인 배열일 때 대략 N^2/2번의 비교가 일어남
시프트는 값을 한 셀 오른쪽으로 옮길때마다 일어남
최악의 경우 비교가 일어날 때마다 시프트를 해야하므로 비교 횟수만큼 시프트가 일어남 N^2/2
따라서 최악의 경우 비교와시프트의 단계수는 N^2번
삭제하고 다시 삽입하는 작업은 패스스루당 한번 씩 일어남 따라서 N-1 두개 2N-2
모든 단계를 다합치면 N^2+2N-2
하지만 빅오에는 상수를 무시하는 중요한 규칙이 있기에 O(N^2+N)으로 단순화 시킬 수 있고
또한 빅오 표기법에서는 가장 높은 차수의 N만 고려하기에
O(N^2)이됨
버블 정렬은 N^2이고 선택 정렬은 N^2/2이고 삽입 정렬은 N^2+2N-2이기때문에
버블 정렬이나 삽입 정렬은 선택 정렬보다 두배 느리다고 생각할 수 있으나 그렇게 간단하지 않음
최악의 시나리오의 경우 선택 정렬이 삽입정렬보다 빠른게 맞으나 평균시나리오도 중요하게 고려해야함
최선과 최악의 시나리오는 상대적으로 드물게 발생함 실제로는 평균 시나리오가 일어남
최선의 시나리오에서 삽입 정렬은 패스스루 한번당 비교만 하며 시프트는 일어나지 않는다
최악과 최선의 반으로 평균을 내면 데이터의 반을 비교하고 반을 시프트 한다
삽입정렬이 최악에서 N^2단계가 걸린다면 평균에선 N^2/2가 걸린다 하지만 빅오에선 똑같이 N^2이다
위같이 시나리오에 따라 성능이 크게 좌우 된다
사용자 요구에 맞는 최적의 알고리즘을 고르는 핵심 기술임
OSI 7 계층은 네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준화 기구(ISO)에서 정의한 네트워크 표준 모델
OSI 7계층 보다 먼저 나온 규격이나 현재 더 많이 활용 된다
OSI는 개념 모델, TCP/IP는 실제 구현 모델
OSI는 이론적으로 완벽하게 쪼개놓은 것
거의 2주만에 돌아왔습니다 동미참 예비군과 휴식을 가지고 오늘은 몸풀기로 가볍게 해봤습니다
내일 부터는 Spring을 들어갈예정입니다 오랜만에 공부를하니 공부가 잘 되는거 같기도하고
너무 나태하게 살았나라는 생각도 들기도 합니다 내일부터는 더 열심히 하겠습니다