
나중에 넣는게 제일 먼저 나오는 LIFO(Last In First Out) 구조
push() 데이터를 스택에 넣는다 stack.push("운동")
pop() 스택에서 가장 최근 항목을 꺼낸다 stack.pop() → "운동"
isEmpty() 스택이 비었는지 확인 stack.isEmpty() → true/false
| 개념 | 설명 |
|---|---|
FileReader | 파일을 문자 단위로 읽는 스트림 클래스. 텍스트 파일 읽기에 사용됨 |
BufferedReader | FileReader를 감싸서 버퍼를 사용하고 한 줄 단위로 읽기 가능하게 해줌 |
readLine() | BufferedReader에서 제공하는 메서드로, 한 줄씩 문자열로 읽고 개행(\n)은 제거됨 |
n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.
첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.
1부터 n까지 합을 출력한다.
3
6
package loop;
import java.util.Scanner;
public class BOJ_8393_Sum {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
}
System.out.println(sum);
}
}
기본적인 반복문 + 변수 누적
준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.
영수증에 적힌,구매한 각 물건의 가격과 개수 구매한 물건들의 총 금액을 보고,
구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.
첫째 줄에는 영수증에 적힌 총 금액 X
둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.
이후
N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.
구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.
1≤X≤1000000000
260000
4
20000 5
30000 2
10000 6
5000 8
Yes
영수증에 적힌 구매할 물건들의 목록으로 계산한 총 금액은 20000 × 5 + 30000 × 2 + 10000 × 6 + 5000 × 8 = 260000원이다. 이는 영수증에 적힌 총 금액인 260000원과 일치한다.
250000
4
20000 5
30000 2
10000 6
5000 8
No
package loop;
import java.util.Scanner;
public class BOJ_25304_ReceiptCheck {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long x = sc.nextLong();
int n = sc.nextInt();
int cost = 0;
for (int i = 1; i <= n; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
cost += a * b;
}
if (x == cost) {
System.out.println("Yes");
}else {
System.out.println("No");
}
}
}
For 반복문 연산로직 구성 및 반복문 + 조건문 사용 범위 에 따른 long 사용
오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이
N바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?”
혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다.
책에는 long int는 4바이트 정수까지 저장할 수 있는 정수 자료형이고
long long int는 8바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다.
혜아는 이런 생각이 들었다. “int 앞에 long을 하나씩 더 붙일 때마다
4바이트씩 저장할 수 있는 공간이 늘어나는 걸까?
분명 long long long int는 12바이트
long long long long int는 16바이트까지 저장할 수 있는 정수 자료형일 거야!”
그렇게 혜아는 당황하는 면접관의 얼굴을 뒤로한 채 칠판에 정수 자료형을 써 내려가기 시작했다.
혜아가 N바이트 정수까지 저장할 수 있다고 생각해서 칠판에 쓴 정수 자료형의 이름은 무엇일까?
첫 번째 줄에는 문제의 정수 N이 주어진다.
4<=N<= 1000 N은 4의 배수
혜아가 N바이트 정수까지 저장할 수 있다고 생각하는 정수 자료형의 이름을 출력하여라.
4
long int
20
long long long long long int
package loop;
import java.util.Scanner;
public class BOJ_25314_LongCoding {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String result = "";
for(int i = 1; (i*4) <= n; i++){
result += "long ";
}
result += "int";
System.out.println(result);
}
}
문자열을 추가 String “” 사용과 문자열 처리감각만 있으면 해결 가능
| 구분 | 설명 | 예시 |
|---|---|---|
static void | 클래스 자체에서 호출 가능한 메서드 (객체 생성 불필요) | main() 메서드, Math.max(1, 2) 등 |
void | **인스턴스(객체)**를 생성해야 호출 가능 | TodoService.printAll() 등 |
TodoService.printAll() 같은 인스턴스 메서드
private void autoSave(){
TodoManager.saveTodosToFile(todos, "todos.json");
네.. 오늘 놀아 버렸습니다… 공부 많이 못했습니다… 이번주 목표로 했던
기능추가 다하기와 .. 백준 15문제만 완료하고 … 마무리했습니다..
사람이 끝마무리가 좋아야하는데 내일 반드시 테스트 코드 추가와 cs공부를 하겠습니다
다음주는 이번주보다 더 멋있게 살겠습니다… 그래도 백준은 다맞아서 기분이 좋습니다…
놀았지만 다시 앉아서 공부한 나 멋있습니다…