Computer_Language 69

[백준] 2252번 줄 세우기 파이썬 해설

출처 : https://www.acmicpc.net/problem/2252 입사 후 교육을 받는 기간이라 주말에 간간히 한 두 문제 정도 풀 수 있다..ㅜ 심지어 회사와 관련된 내용과 지식은 보안상 조심해야 한다고 하기 때문에 퇴사 전 까지는 알고리즘 문제 풀이 정도나 올릴 것 같다. 오늘은 동기들을 통해 추천받은 "위상 정렬" 알고리즘 문제를 풀어봤다. 정답률도 높고, 정답의 범위도 넓기 때문에 푸는데 조금 수월했던 것 같다. 풀이 위상정렬의 개념에 대해서 공부하기 좋은 기본 문제라고 생각한다. a, b를 입력받을 때 a가 b를 참조한다고 생각하고, 참조 횟수가 0인 정점부터 위상 정렬을 수행하면 쉽게 문제를 풀 수 있다. 다만 참조 횟수가 0인 정점에 대해 정렬을 수행하고 나서 해당 정점이 참조하던 ..

[백준] 4949번 균형잡힌 세상 파이썬 해설

출처 : https://www.acmicpc.net/problem/4949 입사 후 교육을 받는 기간이라 주말에 간간히 한 두 문제 정도 풀 수 있다..ㅜ 심지어 회사와 관련된 내용과 지식은 보안상 조심해야 한다고 하기 때문에 퇴사 전 까지는 알고리즘 문제 풀이 정도나 올릴 것 같다. 오늘은 오랜만에 알고리즘 문제를 풀었기 때문에 다소 쉬운 문제를 선택했다. 문자열을 다루는 문제이며 괄호 찾기와 매우 유사한 문제이기 때문에 자료구조 stack을 이용하면 쉽게 풀 수 있다. 풀이 문제를 정독하고 간단하게 알고리즘을 설계한 뒤 그대로 코드로 구현하였다. 1. 입력을 받는다. 2. 좌측 괄호('(', '[')인지 검사한다. 만약 좌측 괄호라면 스택에 넣어준다. 3. 우측 괄호인지(')', ']') 검사한다. ..

[Java] 7. 자바의 배열과 정렬

자바의 배열 사용법과 배열의 정렬에 대해 간단히 정리하는 내용이다. 자바의 배열 선언 자바에서 배열을 선언할 때 사용하는 방법은 몇 가지 있는데 그중 가장 기초적인 문법을 예시로 사용하였다. int size = 10; //int [] arr = new int[size]; int [] arr = new int[] {3, 5, 7, 1, 2, 4, 6, 9, 0, 8}; for(int i = 0; i < size; i++){ System.out.print(arr[i] + " "); } System.out.println(); 위에서 사용한 방법은 직접 배열의 원소를 초기화하면서 선언하는 방법이다. 주석 처리된 줄을 사용하여 빈 배열을 선언할 수 있다. C언어에서 배열을 사용할 때와 문법은 거의 비슷하지만 ma..

[Java] 6. 자바의 함수(메소드)와 오버로딩

이번 글은 자바의 함수에 대한 내용이다. C언어에서는 불가능했던 오버로딩에 대한 개념도 같이 정리해봤다. 자바의 함수 정의 함수를 정의할때 보통 리턴 값의 자료형, 함수의 이름, 매개변수, 함수의 내용, 그리고 리턴 값이 정의된다. 물론 매개변수나 리턴 값이 없는 함수도 존재한다. public static int new_func_2(int a, int b) { System.out.println("This is new_func_2"); System.out.println("return a + b"); return a + b; } 간단한 덧셈 함수를 정의하는 예시이다. 코드 내부의 public과 static의 의미는 클래스를 공부하면서 따로 정리할 예정이다. 추가적으로 리턴값과 매개변수가 없는 함수를 정의하고..

[Java] 5. 자바의 반복문

이 전 강의에서 조건문과 선택문을 배웠으니 반복문만 배운다면 아주 간단한 프로그램 만들기를 시작할 수 있다. 자바의 반복문 문법은 C언어의 반복문 문법과 다를 바 없다. for문 c언어의 문법과 동일하다. for(시작 조건 ; 실행 조건 ; 증감식) 형태로 시작 조건은 한번 실행되고, 실행 조건과 증감식은 매 반복문마다 수행하게 된다. 한 가지 특징은 c언어와 다르게 시작 조건에서 변수를 선언할 수 있다. (C++의 특징과 동일하다.) 실행 조건에는 boolean 자료형만 입력 가능하다. //간단한 반복문 //for(시작조건 ; 실행조건 ; 증감식) for(int i = 1; i

[Java] 4. 자바의 조건문과 선택문

이번 글은 아주 짧을 예정이다. 자바의 조건문과 선택문에 대해 공부를 했다. C언어의 문법과 상당히 유사하기 때문에 어려운 부분도 없었고, 자바라고 특별한 부분이 존재하는 것도 아니었다. 짧은 예시 코드를 통해 조건문(if)과 선택문(switch)의 사용법에 대해 정리해봤다. package project; public class Main { public static void main(String[] args) { //간단한 조건문 예제 int a = 10; if(a > 5){ System.out.println("a의 값은 5보다 큰 값으로 초기화 되었습니다."); } else if(a == 10){ System.out.println("a의 값은 10으로 초기화 되었습니다."); } else { Syste..

[Java] 3. 자바의 연산자

자바의 연산자에 대해서 공부하는 시간을 가졌다. 많은 연산자 중 파이썬이나 C랑 조금씩 달랐던 개념에 대해서만 정리를 했다. 대입 연산자와 산술 연산자 대입 연산자는 단순하게 변수에 값을 저장할 때 사용하는 연산자이다. 좌측과 우측의 자료형이 동일할 때 대입 연산자 사용이 가능하다. 다른 현 간에 대입 연산자를 사용하려면 "형 변환"에 대해서 공부가 필요하다. //대입 연산자 int a = 7; System.out.println("\"int a = 10;\"을 수행한 후 a : " + a); 산술 연산자의 종류에는 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지 연산자가 있다. 아래 예제 코드와 주석을 참고하면 이해가 쉬울 것이다. //덧셈 연산자 int b = 13; System.out.print("\"a + b..

[Java] 2. 자바의 기본형 자료형

자바의 여러 가지 문법을 학습하기 전에 변수를 담을 수 있는 자료형의 종류와 크기 정도를 정리하려고 한다. 정수형 자료형 자바에서 사용하는 정수형 자료형에는 int, short, long이 있다. 각 자료형의 크기는 int는 4바이트, short는 2바이트, long은 8바이트이며, 실제 아래 코드를 실행시켜 확인해볼 수 있다. //정수형 int intVar = 1; short shortVar = 1; long longVar = 1; System.out.println("----- 정수형 자료형의 정보 -----"); System.out.println("int형 변수의 크기 : " + Integer.BYTES); System.out.println("short형 변수의 크기 : " + Short.BYTES)..

[Java] 1. 자바에 대한 기본적인 지식

출처 : https://www.tiobe.com/tiobe-index/ 입사 전 전 세계에서 가장 많이 쓰이고 있는 자바 언어에 대해서 공부를 하고 들어가겠다고 다짐을 했다. C++과 파이썬(Python) 언어를 공부했기 때문에 처음 배우는 사람보다는 조금 더 쉬울 것 같다. 자바를 열심히 공부하면 나름 순위권에 있는 언어들을 다룰 줄 아는 개발자가 되는 것이다! 자바란 자바(Java)는 1995년 미국의 "선마이크로시스템즈"라는 회사에서 개발한 객체지향 언어이다. 현재는 "오라클"이라는 회사에 인수되어 배포되고 있다. 크게 세 가지 특징이 있다. 배우기 쉬운 언어이다. C/C++ 언어의 문법을 차용하면서, 어려웠던 개념을 없애버린 컴퓨터 언어이다. 직접 메모리 관리를 하지 않아도 되고, 포인터에 대한 ..

[백준] 1713번 후보 추천하기 파이썬 해설

출처 : https://www.acmicpc.net/problem/1713 코딩 테스트 문제에서 자주 출현하는 구현 알고리즘이다. 보통 1, 2번 문제에 출제되고 긴장하면 말리기 쉬운 문제 유형이니 많이 풀어서 익숙해지는 게 중요한 것 같다. 풀이 보통 구현 문제는 여러가지 조건을 그대로 구현하면 정답을 맞힐 수 있는 구조로 많이 출제된다. 성급하게 접근하기 보단 문제의 조건을 읽어보고 정리한 뒤에 알고리즘을 설계하는 것을 추천한다. 문제의 조건은 다음과 같다. 학생들이 추천을 시작하기 전에 모든 사진틀은 비어있다. 어떤 학생이 특정 학생을 추천하면, 추천받은 학생의 사진이 반드시 사진틀에 게시되어야 한다. 비어있는 사진틀이 없는 경우에는 현재까지 추천받은 횟수가 가장 적은 학생의 사진을 삭제하고, 그 ..