Today I Learned
(24.04.25)[2주차] 알고리즘 세션+개인과제
알고리즘 세션과 더불어서 CODE KATA 가 진행되었는데
다행이도 완전 모르는 것이 아닌 프로그래머스에서 했던 내용을 기반으로 진행이 되어서 그나마 수월하게 할 수 있었다.
따라서 앞으로는
- 내일배움캠프의 스케줄에 맞추서 제출을 하는 것은 의무
- 개인적으로 KATA 시간 1시간 동안은 스케쥴 넘어서 알고리즘 연습을 쭉 할 수 있도록 할 것
- 추후 모의면점 CODE KATA 비중을 두기 위해서 하루에 두개씩 이상을 한다고 생각
계획을 수정
알고리즘 세션 정리
알고리즘과 데이터 구조에 대한 세션으로 간단하게 잊지 않기 위해 정리를 했다.
더보기
알고리즘
- 어떤 작업에서 입력 부터 출력 까지의 과정을 순차적으로 기술을 한 것
알고리즘의 필요성
- 복잡한 문제의 효율적인 해결
- 코딩테스트 및 포토폴리에 어필을 할 수 있는 부분
예시
- DB 탐색/검색 알고리즘
- 데이터 정렬/메모리 관리 알고리즘
- 최단 경로 알고리즘
자료구조
- 빠른 저장과 검색을 가능하게 하여 효율적인 데이터의 관리
- 쉬운 접근을 위한 조직
- 세부 정보를 숨기고 논리적인 측면에 집중할 수 있도록 하게끔 가능
- 다양한 프로그램에서 공통적으로 재사용
- 알고리즘을 최적화 시키는데 매우 중요한 구조
자료구조 형태
- 배열 Array
- 연결된 리스트 Linked List
- 해시테이블 Hash table
- 스택 Stack / 큐 Queue
- 트리 Tree
- 그래프 Graph
개인 과제 이슈
더보기
package calculator;
import java.util.Arrays;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
/*연산 결과 10개를 저장할 길이 int배열 객체 생성*/
int[] calculationResult = new int[10];
/*연산 결과를 index에 저장하면서 카운트 초기값*/
int idx = 0;
Scanner sc = new Scanner(System.in);
/* exit 문자열이 입력될 때 까지 연산 반복 반복문*/
String input = null; // do - while 반복문 조건에 넣기 위해 입력값 초기화
do {
System.out.print("첫 번째 숫자를 입력하세요: ");
/* Scanner를 사용하여 양의 정수를 입력받고 적합한 타입의 변수에 저장합니다. */
int num1 = sc.nextInt();
System.out.print("두 번째 숫자를 입력하세요: ");
/* Scanner를 사용하여 양의 정수를 입력받고 적합한 타입의 변수에 저장합니다. */
int num2 = sc.nextInt();
System.out.print("사칙연산 기호를 입력하세요: "); // + - * / 중 하나를 입력받음
/* charAt(idx)는 String타입 하나 입력된 기호를 charAt으로 char타입의 변수로 선언 */
char operator = sc.next().charAt(0);
int result = 0; // 연산 결과 초기값
/*연산 시작*/
if (operator == '/') { // 분모가 0인 나눗셈은 연산 없이 경고문구 출력
System.out.println("나눗셈 연산에서 분모에 0이 입력될 수 없습니다.");
} else {
/* 입력된 operator 값 + - * / 에 따라 각각 연산 후, 결과값 출력*/
switch (operator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
result = num1 / num2;
break;
}
System.out.println("결과: " + result);
/*연산결과 배열에 저장*/
calculationResult[idx] = result;
idx++; // 다음 반복시 다음 인덱스에 넣기 위에 증가 연산자
/*추가 연산 여부 확인*/
System.out.println("더 계산하시겠습니까? (exit 입력 시 종료)");
input = sc.next();
}
} while (!(input.equals("exit"))); // exit이 입력되면 반복문 종료, 그 외에는 계속 반복와
System.out.println(Arrays.toString(calculationResult)); // 배열 저장 확인
}
}
do-while 반복문의 조건절의 오류
이슈 : do{} 절에 String input=sc.next() 다음 입력값으로 input 참조변수를 만들어줘도 {... } while (!(input.equals("exit"))); 조건절에서 input 변수가 없다고 오류
원인
- {} 안에서 새롭게 선언한 변수는 Local 변수가 되어서 블럭밖에서는 쓸수가 없다는 것을 간과
- 진짜 초급적인 내용인데 괜히 빠르게 코드를 작성하면서 자연스럽게 반복문/조건문은 어떠한 특수한 구문으로 인지를 해버려서 블럭이었다는 것을 까먹음
해결
- do-while전 새롭게 입력될 새로운 input 변수를 미리 선언 String input = null;
- do {} 블럭안에서는 그 변수의 값을 변경
과제가 살짝 어려워서 해매긴했지만,
좀더 익숙해져서 좀더 쓰면서 과제를 마무리 할 수 있도록 해야할 것..
'Today I Learned' 카테고리의 다른 글
(24.04.27)[2주차] WIL (0) | 2024.04.27 |
---|---|
(24.04.26)[2주차] 알고리즘 심화 세션 정리, 과제 이슈 정리 (1) | 2024.04.26 |
(24.04.24)[2주차] Java문법 종합반 강의(예외처리, 제네릭 / 쓰레드, 람다, 스트림, Optional) (0) | 2024.04.24 |
(24.04.23)[2주차] Java문법 종합반 강의(컬렉션, 클래스, 상속, 인터페이스 + 실습 문제 풀이) (0) | 2024.04.23 |
(24.04.22)[2주차] Java문법 종합반 강의(Java입문, 변수/상수, 연산자, 조건문/반복문, 배열) (0) | 2024.04.22 |