[JAVA] 자료구조와 함께 배우는 알고리즘 - 기본 알고리즘

선뀰·2023년 12월 14일
0

JAVA

목록 보기
5/25

파이썬으로 알고리즘 공부 하다가..
파이썬으로 코테 보고 java로 작성하지 못하는 불상사를 저질렀다는 사람을 본 뒤
경각심을 느껴 나도 java로 코테 보기로 했다.
힘들긴 하겠다만, 그래도 java가 주력 언어이기 때문에 나중에 실보다는 득이 될 것같기도 하다.
이번달 내로 할 게 너무 많다. 힘들긴 하지만 화이팅해보자!

1. 숫자와 문자열 입력

import java.util.Scanner; 를 추가해준다.

Scanner 객체명(stdIn) = new Scanner(System.in);
System.in 키보드에서 사용자로부터 키 입력을 받기 위해서 사용한다.
Scanner의 인스턴스를 stdIn이라는 이름으로 생성한다.

System.in : 표준 입력 스트림이다.
stdIn.nextInt()를 호출하면 입력한 정숫값을 얻을 수 있다.

Scanner 클래스에 포함되어 있는 next메서드

- 프로그램 순서도 (program flowchart)

실제로 실행할 연산을 나타내는 기호
제어 흐름을 나타내는 선 기호
프로그램 순서도를 이해하거나 작성하는 데 편리한 특수 기호

  • 데이터
    데이터 입력과 출력을 나타낸다.

  • 처리
    정보값, 자료형, 연산의 실행을 나타낸다.

  • 미리 정의된 처리
    서브루틴 및 모듈 등 다른 곳에서 이미 정의된 하나 이상의 연산 또는 여러 개의 명령어로 이루어진 처리를 나타낸다.

  • 판단
    정의한 조건을 평가하여 선택하는 판단 기능을 나타낸다.

  • 루프 범위
    루프의 시작과 종료를 나타낸다.


  • 제어의 흐름을 나타낸다. 흐름의 방향을 분명히 할 때 나타낸다.

  • 단말
    외부 환경으로 나가거나 외부 환경에서 들어오는 것을 나타낸다. 흐름의 시작과 종료를 나타낸다.

반복문

while(제어식) {
명령문
}

int n = stdIn.nextInt(); 이렇게 값을 입력받아줘야 한다.
while문이 종료될 때 변수 i값이 n+1이 되어야 한다.
i값이 n보다 크면 최종 값은 i가 아니라 n+1이다.

가우스의 덧셈 : 1~10의 합 = (1 + 10) * 5 으로 구할 수 있다.

  • 정수 a, b를 포함하여 그 사이의 모든 정수의 합을 구하여 반환하는 메서드를 작성하시오.
    static int sumof(int a, int b)

  • 여러개의 for문
    for (int i = 1; i<= 5; i++)
    sum += i;
    for (int i = 1; i<= 7; i++)
    System.out.prinln(i);

  • do while문 (제어식);

while, for문과 do while문의 차이

  • 사전판단반복 : while, for문 루프 본문을 한 번도 실행하지 않을 수 있다.
  • 사후판단반복 : do while문 루프 본문을 한 번은 반드시 실행한다.

자릿수를 구하기

int no = Integer.toString(Math.abs(a)).length();
System.out.prinln(no);

Integer.toString(Math.abs()).length();를 이용하면 자릿수를 더 쉽게 구할 수 있다.
abs를 사용하면 음수를 입력했을 때에도 구할 수 있다.

print()

괄호 안의 내용을 단순하게 출력한다. 개행문자 불가능

println()

내용물을 출력할 때 개행문자가 포함되어 있기 때문에 출력한 뒤에 한 줄 띄워진다.

printf()

지시자를 통해 변수의 값을 여러 가지 형식으로 변환하여 출력할 수 있다.
System.out.printf("출력 서식", 출력할 내용);
줄바꿈을 하지 않고, 줄바꿈을 하려면 %n을 넣어줘야 한다.

  • 자릿수 지정을 안 했을 경우 왼쪽으로 정렬된다.
    System.out.printf("%d", 1);
    System.out.printf("%d", 10);
    System.out.printf("%d", 100);
    System.out.printf("%d", 1000);

  • 자릿수 지정 할 경우 오른쪽으로 정렬된다. (남는 자릿수 공백)
    System.out.printf("%4d", 1);
    System.out.printf("%4d", 10);
    System.out.printf("%4d", 100);
    System.out.printf("%4d", 1000);

  • 자릿수 지정 후 '-'를 사용하면 왼쪽으로 정렬된다.
    System.out.printf("%-4d", 1);
    System.out.printf("%-4d", 10);
    System.out.printf("%-4d", 100);
    System.out.printf("%-4d", 1000);

  • 자릿수 지정 후 '0'을 사용하면 오른쪽으로 정렬
    System.out.printf("%04d", 1);
    System.out.printf("%04d", 10);
    System.out.printf("%04d", 100);
    System.out.printf("%04d", 1000);

profile
공부 기록

0개의 댓글