전체 글 118

백준 온라인 저지 | 5543 | 실습: 상근날드

나의 풀이 쉬웠다. 배열에 순서대로 입력을 하고 최솟값을 찾아내는 방법만 알면 된다. 햄버거 중에 가장 작은 것과 음료수 중에 가장 작은 것을 더하는 방식으로 풀었다. package baekjunOnlineJudge; import java.io.*; public class Bj_5543 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int cheapestBurger = 2000; int cheapestBeverage = 2000; int menu[] = new int[5]; for(int i=0; i

백준 온라인 저지 | 10039 | 실습: 평균점수

나의 풀이 한 줄에 여러 값을 입력 받는 것이 아니라서 bufferedReader를 쓰지 않았다(그냥 빨리 풀고 싶었다). scores 라는 크기 5개 짜리 배열을 만들어 차례로 점수를 집어넣었고, 넣고 난 다음 바로 점수 크기 검사를 하여 40점 미만이면 40점으로 점수를 바꿨다. 반복문 안에서 동시에 점수 총합을 계산한 다음 출력할 때 scores 배열의 크기(5)로 나누어 평균 점수를 구했다. package baekjunOnlineJudge; import java.util.Scanner; public class Bj_10039 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int scores[] = ne..

백준 온라인 저지 | 1110 | while문: 더하기 사이클

나의 풀이 어려웠다. 푸는 시간을 정확히 계산해 보진 않았지만 2시간 정도 걸렸던 것 같다. 자료형을 원하는대로 변환시켜 주어진 연산을 잘 수행할 수 있느냐가 가장 중요했다고 생각한다. 아직 다른 사람의 풀이를 보지 않았지만 나는 다음과 같이 풀었다. Scanner로 입력값을 '문자열'로 받고 분리하고 정수로 바꾼다. 정수로 바꾼 값을 더한 다음, 그것의 일의 자리를 숫자를 문자열로 바꾼다. 2번의 숫자를 이전의 입력값의 오른쪽 숫자와 결합한다. 이 과정을 반복하여 첫 입력값과 똑같이 나올 때까지 반복한 횟수를 출력한다. 주의해야 했던 점은 일의 자리 숫자가 입력되거나 결합했을 때 '01', '03' 같이 십의 자리에 '0'이 오는 경우였다. 일의 자리 숫자가 입력되면 앞 자리에 '0'을 붙이는 공정을 ..

백준 온라인 저지 | 10951 | while문: A + B - 4

이 문제로 새로 배운 것이 많았고 동시에 모르는 것도, 알아봐야 할 것도 많이 생겼다. 새로 배운 것: - while 안 조건문 안에서 변수에 값을 넣고 참/거짓 판단이 가능하다. - StringBuilder, StringTokenizer 클래스 의문으로 남은 것: - 왜 BufferedReader에서 엔터(Enter)를 눌러 아무것도 입력하지 않은 다음 readLine()을 하면 null이 나오지 않는 것일까? 그런데 또 백준 온라인 저지에서는 통과됐다. ( NoSuchElementException 예외가 발생한다 ) 알아봐야 할 것: - toString 메서드 문제: 풀이: package baekjunOnlineJudge; import java.io.BufferedReader; import java...

백준 온라인 저지 | 10952 | while문: A+B - 5

나의 풀이 while문의 조건을 'A와 B가 동시에 0이다'의 부정형인 'A가 0이 아니거나 B가 0이 아니다'로 두고 풀었다. package baekjunOnlineJudge; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; public class Bj_10952 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..

정렬되지 않은 배열에서 이진 검색과 선형 검색 속도 비교

edwith 강의 마지막에 생각해보기 질문이 다음과 같았다. 만약 정렬되지 않은 배열이 있다면, 선형 검색이 빠를까요 이진 검색이 빠를까요? [LECTURE] 1) 검색 알고리즘 : edwith 들어가기 전에 지난시간까지 우리는 메모리의 구조, 자료형, 배열과 같은 기본적인 개념을 익혔습니다. 이번 강의부터는 여태까지 배운 내용을 활용하여 검색이나 정렬과 같은 문제를 푸는... - www.edwith.org 내가 현재 가지고 있는 자료구조와 알고리즘 책에서는 이진 검색의 '전제'가 '정렬된 데이터'에서 검색하는 것이기 때문에 문제가 성립하지 않는다. 하지만 무시하고 진행시키면 속도는 어떻게 측정할 수 있을까? 선형 검색의 경우 그냥 처음부터 검사하면 되지만, 이진 검색의 경우 문제가 생긴다. 이진검색은 ..

백준 온라인 저지 | 2439 | 별 찍기 - 2

입력 숫자에 따라 오른쪽으로 정렬된 별(*)을 순차적으로 증가시키며 출력해야 한다. for문 안에 두 개의 for문이 들어간다. 하나는 공백을 찍어내고, 하나는 별표를 찍어낸다. 공백을 찍어낼 때 조건을 초기값이 (입력숫자 - i - 1)보다 작도록 해주는 것이 핵심이다. import java.util.Scanner; public class Bj_2439 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); for(int i=0; i

백준 온라인 저지 | 15552 | 빠른 A+B

백준 온라인 저지 중에 빠른 A+B 라는 문제에서 막혔다. BufferedReader 와 BufferedWriter라는 것을 처음 들어봤다! 버퍼를 이용한 입출력은 자바에서 많이 사용되는 스캐너와 System.out.println에 비해 빠르다! 버퍼를 이용한 입출력이 스캐너와 println과 다른 점은 입력할 때 오직 Enter로만 경계로 인식하고 받은 데이터의 형이 String으로 고정된다는 것이다. 입력된 데이터를 읽어들일 때는 readLine() 메서드를 사용하는데, 데이터를 '한 줄'씩 읽어들인다! 그리고 String형이니 공백을 따로 제거하는 데이터 가공 과정이 필요하다. 그리고 출력 시 BufferedWriter를 사용하게 되면, flush()와 close() 메서드를 통해 버퍼 쓰기를 닫아..

BufferedReader / BufferedWriter

백준 문제를 풀다가 Buffer로 입출력 부분에서 막혀서 따로 공부를 한다. [Java 자바 입출력] BufferedReader/BufferedWriter [자바 입출력 함수] BufferedReader / BufferWriter BufferedReader/BufferedWriter은 이름처럼 버퍼를 이용해서 읽고 쓰는 함수입니다. 이 함수는 버퍼를 이용하기 때문에 이 함수를 이용하면 입출력의 효율이.. jhnyang.tistory.com [Java] BufferedReader, BufferedWriter를 활용한 빠른 입출력 BufferedReader/BufferedWriter는 Buffer에 있는 IO 클래스입니다. 입력된 데이터가 바로 전달되지 않고 중간에 버퍼링이 된 후에 전달되됩니다. 출력도 마..

[부스트코스] 모두를 위한 컴퓨터 과학 (CS50 2019) | 하드웨어의 한계

https://www.edwith.org/boostcourse-cs-050/lecture/119010/ [LECTURE] 6) 하드웨어의 한계 : edwith 들어가기 전에 컴퓨터는 우리가 작성한 프로그램을 구동하기 위해 다양한 물리적 장치를 사용합니다. 그 중 하나는 메모리로, 프로그램이 필요한 정보가 저장되는 곳입니다. 메모리의 용량... - www.edwith.org 컴퓨터는 RAM(랜덤 액세스 메모리)이라는 물리적 저장장치를 포함하고 있습니다. 우리가 작성한 프로그램은 구동 중에 RAM에 저장되는데요, RAM은 유한한 크기의 비트만 저장할 수 있기 때문에 때때로 부정확한 결과를 내기도 합니다. 예를 들어, 부동 소수점 부정확성과 정수 오버플로우가 있다. 생각해보기 -> Y2K와 보잉787과 같은 ..

일반 2020.07.08