본문 바로가기

전체 글130

탐색 알고리즘 - 순차 탐색(Sequential Search) 순차 탐색은 데이터의 집합(링크드 리스트, 배열등)을 처음부터 끝까지 차례대로 모든 요소를 비교해서 데이터를 찾는 알고리즘입니다. 순차 탐색은 '처음부터 끝까지 순서대로'라는 전략 때문에 효율은 나쁘지만, 구현이 간단하고 버그를 만들 가능성이 적어 높은 성능이 필요하지 않은 곳에서는 유용하게 사용됩니다. 아래의 코드는 링크드 리스트와 배열의 순차 탐색 코드 예입니다. ode* SLL_SequentailSearchNode(Node* Head, int Target) { //링크드 리스트를 위한 순차탐색 Node* Current = Head; Node* Match = NULL; // 탐색할 타겟과 일차하는 노드 while (Current != NULL) { //노드가 널이 아닐동안 => 널이면 빠져나옴 if .. 2021. 1. 12.
[백준 알고리즘][자바] 10951번 : A+B - 4 https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 해설 일반적인 A+B 와 다른 점은 EOF를 알아야 한다는 점이다. EOF란 End of File 의 약자로 파일의 끝을 의미한다. BufferedReader를 통해 입력을 받을 때, 10952번 문제에서는 입력 값이 0이였을 때 반복문을 종료하였지만 10952번에서는 EOF를 통하여 입력을 종료 해야한다. 2021/01/10 - [Algorithm/Baekjoon] - [백준 알고리즘][자바] 10952번 : A+B -5 [백준 알고리즘][자바] 10952번 : A+B -5 https://www.a.. 2021. 1. 10.
[백준 알고리즘][자바] 10952번 : A+B -5 https://www.acmicpc.net/problem/10952 10952번: A+B - 5 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 해결 방법 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { Buffer.. 2021. 1. 10.
[백준 알고리즘][자바] 15552번 : 빠른 A+B https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net 문제 해설 테스트 케이스를 여러 줄을 입력 받기 때문에 입출력 방식이 느리면 시간초과가 날 수 있다. 따라서 BufferdReader와 BufferdWriter 를 사용하여 입출력을 해야한다. 해결 방법 public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReade.. 2021. 1. 10.
[백준 알고리즘][자바] 2884번 : 알람시계 https://www.acmicpc.net/problem/2884 2884번: 알람 시계 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, www.acmicpc.net 문제 해설 두 정수 H(시간), M(분)을 입력했을 때, 45분 앞서는 시간으로 출력을 해줘야 한다. 여기서 포인트는 45분 앞선 시간을 출력할 때, 시간의 변화를 체크해서 출력해줘야 한다는 점 해결 방법 M(분)이 음수로 떨어지면 H(시간)이 한시간 마이너스된다. M은 0~59 사이의 숫자이기 때문에 60진법이라고 생각하면 쉽게 풀 수 있다. 여기서 주의할 점은 H(시간)이 0시에서 23시로 갈 때만 체.. 2021. 1. 9.
[백준 알고리즘][자바] 2753번 : 윤년 https://www.acmicpc.net/problem/2753 2753번: 윤년 연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서 www.acmicpc.net 해결 방법 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int year; year = scan.nextInt(); if (1 2021. 1. 9.
자바 다형성(Polymorphism) 다형성이란 "다양한 형태를 가진 성질"입니다. 자바에서 다형성을 이용한 기법들은 오버 로딩, 오버 라이딩, 형 변환 등이 있습니다. 자바에서 다형성을 사용하는 이유는 코드의 절감 때문입니다. 똑같은 형태를 가진 요소들을 재사용하거나 기능을 조금 수정해서 사용하는 것이죠. 이번 포스팅에선 형변환중 하나인 업 캐스팅, 다운 캐스팅에 대해 알아보겠습니다. 오버 로딩과 오버 라이딩이 궁금하신 분들은 아래의 게시글을 참고해주세요. 2021/01/06 - [Java] - 자바 상속과 오버 라이딩 자바 상속과 오버라이딩 상속이란 무엇일까요? 부모님에게 상속을 받으면 부모님이 가지고 있는 것의 모든 것들을 물려받을 수 있습니다. 자바에서의 상속은 기존 클래스의 변수나 메서드를 다른 클래스에서 재사용하 hyunipad... 2021. 1. 9.
자바 instanceof 연산자 instanceof 연산자 어떤 객체에 대한 is a (상속) 관계를 판별하는 연산자 주로 if문을 사용하여 형 변환이 가능한 지 여부를 판별한다. instanceof의 결과가 true이면 형 변환이 가능하다. instanceof 기본 문법 if ( 레퍼런스 변수명 instanceof 클래스명 ) {} => 레퍼런스 변수명 => 클래명으로 다운캐스팅 또는 업캐스팅이 일어난다. if문의 조건식인 '레퍼런스 변수명 instanceof 클래스명' 이 true일 경우에는 레퍼런스 변수명이 클래스명(형 변환할 클래스)으로 업 캐스팅 혹은 다운 캐스팅이 가능합니다. 하지만 다운캐스팅인 경우에는 업 캐스팅이 먼저 발생한 후 다운 캐스팅이 가능한데 instanceof 연산자를 통해 다운 캐스팅이 가능한 지 판별을 하면.. 2021. 1. 8.
자바 업캐스팅, 다운캐스팅 업 캐스팅 서브클래스에서 슈퍼클래스로 참조형 형 변환하는 것 자동 형 변환(묵시적 형 변환)이 일어남 참조 가능한 영역이 축소된다. 서브클래스 인스턴스의 멤버 중 공통 항목을 제외한 나머지를 포기 선안 하는 것 but 하나의 슈퍼클래스 타입으로 여러 서브클래스 인스턴스를 참조할 수 있다. 다운 캐스팅 슈퍼클래스에서 서브클래스로 참조형 형 변한 하는 것 강제 형 변환(명시적 형 변환) 필수 참조 가능한 영역이 확대된다. 대부분의 다운 캐스팅은 혀용 되지 않는다. 이미 업 캐스팅된 레퍼런스를 다시 다운 캐스팅하는 경우에만 안전하다!! 코드 예시 public class CastingEx { ​ public static void main(String[] args) { SuperClass superclass = .. 2021. 1. 7.
반응형