전체 글 88

[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번 문제에 출제되고 긴장하면 말리기 쉬운 문제 유형이니 많이 풀어서 익숙해지는 게 중요한 것 같다. 풀이 보통 구현 문제는 여러가지 조건을 그대로 구현하면 정답을 맞힐 수 있는 구조로 많이 출제된다. 성급하게 접근하기 보단 문제의 조건을 읽어보고 정리한 뒤에 알고리즘을 설계하는 것을 추천한다. 문제의 조건은 다음과 같다. 학생들이 추천을 시작하기 전에 모든 사진틀은 비어있다. 어떤 학생이 특정 학생을 추천하면, 추천받은 학생의 사진이 반드시 사진틀에 게시되어야 한다. 비어있는 사진틀이 없는 경우에는 현재까지 추천받은 횟수가 가장 적은 학생의 사진을 삭제하고, 그 ..

[Go] 성적 저장 프로그램 예제 정답 코드

구름 edu의 "바로 실행해보면서 배우는 Go Lang"강의를 수강하면서 Go언어에 대해서 시간이 날 때마다 공부를 하고 있다. (이제는 취미가 코딩이다!) 강의 중간에 배운 내용을 기반으로 예제를 풀어야 다음 단계로 넘어갈 수 있는데, 난이도가 점점 올라갈 수록 예제 문제도 시간이 좀 걸리는 것 같다. (처음 배우는 사람 기준이다!) 혹시나 빠르게 강의만 듣고 싶어하는 사람이 있을 수도 있다고 생각하여 예제 정답 코드를 블로그에 올려두려고 한다. 혹시 강의의 저작권에 문제가 생긴다면 바로 글을 삭제하겠다!! - 성적 관리 프로그램 정답 코드 package main import "fmt" type student struct { name string gender string score map[string]..

[백준] 7576번 토마토 파이썬 해설 (BFS)

출처 : https://www.acmicpc.net/problem/7576 BFS 알고리즘으로 분류된 문제이다. 코딩 테스트를 통과하기 위해 알고리즘 문제를 많이 풀던 시기에 가장 취약했던 알고리즘의 종류 중 하나이다. 한 번의 시도만에 취업을 성공해서 당분간 코딩 테스트는 치르지 않지만, 약점을 보완하기 위해 내가 약했던 알고리즘을 위주로 문제를 다시 풀어보고 있다. 풀이 처음 이 문제를 접근할 때는 하루가 지날 때 마다 배열의 모든 점을 탐색하는 알고리즘을 설계하고 그대로 구현하였다. 나름 예외처리를 했다고 생각했지만 M과 N이 증가 할 수록 시간 복잡도가 기하급수적으로 늘어났고 결국 시간 초과라는 결과를 받았다. ㅜㅜ 그 후에 파이썬의 dequeue 모듈을 사용해서 좀더 효율적인 알고리즘을 새로 설..

[C] C언어 멀티 프로세스 채팅 서버 만들기

지난번에 멀티 스레드 채팅 서버를 만든 적이 있다. (궁금하면 여기를 참고) 이번 포스팅은 멀티 프로세스 채팅 서버를 C로 구현해봤다. (사실 친구의 수업에서 진행하는 프로젝트인데 재미있어 보여서 따라 했다.) C언어 + fork의 조합 때문에 전체적인 코드가 길어지기 때문에 주요 로직에 대해서만 정리를 해야겠다. 서버 코드 서버의 코드에서 사용한 공유 메모리 종류이다. 전체적인 채팅 알고리즘을 아래와 같이 설계했다. - 메세지 헤더, 메세지 유저, 메세지 데이터에 해당하는 공유메모리 영역을 선언한다. - 메세지 헤더에는 현재 메세지의 번호가 담기며, 코드를 실행하면 0으로 초기화된다. - 메인 코드 : 클라이언트 들의 접속을 허가하고 fork를 통해 채팅 알고리즘을 수행하는 프로세스를 생성한다. - 채..

초간단 사이트맵 만드는 방법 (30초만 따라하면 완성)

매번 사이트맵을 만들 때마다 검색을 해서 만드는 모습을 발견하고 직접 글을 작성했다. 사이트맵 만드는 법 정말 간단하다. 30초는 너무 빠르니 천천히 따라가는걸 추천한다. 사이트맵 만들기 1. 먼저 아래 링크로 들어간다. http://www.web-site-map.com/ XML Sitemap Generator - creates Free Google site-maps online Our news: (see more on !) Newest long TLDs are fully supported now This Web-Site-Map.com service is named by Web Hosting Search one of the Best Web Tools "for providing outstanding Xml..

Etc. 2019.12.08

[백준] 1541번 잃어버린 괄호 Python 해설 (그리디 알고리즘)

출처 : https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. www.acmicpc.net 그리디 알고리즘으로 분류된 문제이다. 코딩 테스트나 알고리즘 경진대회에서 해당 알고리즘이 나온다면 확실하게 점수를 가져가야 한다!! 그리 어렵지 않은 알고리즘이니 쉽게 문제를 풀어보자 풀이 여기에 그리디 알고리즘에 대해서 언급한 적이 있다. 간단하게 가장 좋은 선택을 알고리즘이라고 생각한다. "잃어버린 괄호" 문제는 가장 최..

[백준] 2661번 좋은수열 Python 해설 (백트래킹 알고리즘)

출처 : https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net 백트래킹 알고리즘으로 분류된 문제이다. 코딩 테스트를 몇 차례 보면서 탐색, 백트래킹 쪽 문제에 약하다는 걸 알고 관련 문제를 많이 풀어보려고 하는 중이다. 풀이 입력받은 자릿수만큼의 길이가 될 때까지 깊이 우선 탐색을 진행하게 된다. 깊이 우선 탐색만 예를 들면 n = 7일 경우 첫 결과는 1111111이 된다. (최솟값 우선 조건 적용) 하지만 백트래킹 알고리즘을 적용하여 깊이 우선 탐색에 조건을..