전체 글
개발 및 일상 블로그
-
해설 가장 기본적인 출력 문제입니다. Java에서 주로 사용되는 출력 방식은 System.out.printXXX() 방식이나 BufferedWriter를 이용한 방식이 있습니다. 이번 문제에서는 간단하게 한 문장인 Hello World를 출력하기 때문에 System.out.println() 을 사용했지만, 많은 양의 출력을 해야하는 경우엔 버퍼를 사용하는 BufferedWriter를 사용하는 것이 성능적인 측면에서 좋습니다. 코드 package baekjoon; import java.io.IOException; /** * 번호 - 2557 * 제목 - Hello World * 문제 - Hello World!를 출력하시오. * 입력 - 없음 * 출력 - Hello World! */ public class ..
백준 - 2557번 Hello World해설 가장 기본적인 출력 문제입니다. Java에서 주로 사용되는 출력 방식은 System.out.printXXX() 방식이나 BufferedWriter를 이용한 방식이 있습니다. 이번 문제에서는 간단하게 한 문장인 Hello World를 출력하기 때문에 System.out.println() 을 사용했지만, 많은 양의 출력을 해야하는 경우엔 버퍼를 사용하는 BufferedWriter를 사용하는 것이 성능적인 측면에서 좋습니다. 코드 package baekjoon; import java.io.IOException; /** * 번호 - 2557 * 제목 - Hello World * 문제 - Hello World!를 출력하시오. * 입력 - 없음 * 출력 - Hello World! */ public class ..
2023.07.12 -
💡 기초 복습 겸 정리하고 있는 글입니다. 간단하게만 설명하고 넘어가는 부분이 많으니 참고 바랍니다. 조건문 조건문에는 if문과 switch문이 존재합니다. 사용법은 다음과 같습니다. // if문 if ( 조건식 ) { 실행문; ... }else if ( 조건식 ) { 실행문; }else { 실행문; } // switch문 switch( 변수 ) { case 값1 : 실행문; break; case 값2 : 실행문; break; default : 실행문; break; } if문의 경우, 조건식이 true거나 false여야 합니다. 또한, 실행문이 하나인 경우, 중괄호를 생략하고 사용할 수 있습니다. switch문의 경우 주의해야할게 case에 break가 작성되어있지 않다면 빠져나가지 않고 그 아래에 존재..
자바 기초 - 조건문과 반복문💡 기초 복습 겸 정리하고 있는 글입니다. 간단하게만 설명하고 넘어가는 부분이 많으니 참고 바랍니다. 조건문 조건문에는 if문과 switch문이 존재합니다. 사용법은 다음과 같습니다. // if문 if ( 조건식 ) { 실행문; ... }else if ( 조건식 ) { 실행문; }else { 실행문; } // switch문 switch( 변수 ) { case 값1 : 실행문; break; case 값2 : 실행문; break; default : 실행문; break; } if문의 경우, 조건식이 true거나 false여야 합니다. 또한, 실행문이 하나인 경우, 중괄호를 생략하고 사용할 수 있습니다. switch문의 경우 주의해야할게 case에 break가 작성되어있지 않다면 빠져나가지 않고 그 아래에 존재..
2023.07.12 -
네트워크 네트워크란 연결망을 의미합니다. 인적 네트워크, 물류 네트워크, 철도 네트워크 등 무언가 연결되어서 하나의 망을 이루면 모두 네트워크라고 불립니다. 하지만, 이 글에서 다룰 것은 바로 컴퓨터들이 서로 연결되어 있는 컴퓨터 네트워크입니다. 편의상 컴퓨터 네트워크를 네트워크라고 부르도록 하겠습니다. 네트워크는 네트워크에 속한 컴퓨터나 통신 장비들(=노드)이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나로, 분산되어 있는 컴퓨터들은 통신망으로 연결되어 서로 데이터를 교환할 수 있습니다. 두 대만 있더라도 네트워크라 부를 수 있으며, 인터넷은 이러한 네트워크 중 하나로 전 세계의 크고 작은 네트워크들이 연결되어 있는 것을 의합니다. 네트워크의 분류 네트워크는 범위에 따라 LAN , WAN, ..
네트워크 (Network)네트워크 네트워크란 연결망을 의미합니다. 인적 네트워크, 물류 네트워크, 철도 네트워크 등 무언가 연결되어서 하나의 망을 이루면 모두 네트워크라고 불립니다. 하지만, 이 글에서 다룰 것은 바로 컴퓨터들이 서로 연결되어 있는 컴퓨터 네트워크입니다. 편의상 컴퓨터 네트워크를 네트워크라고 부르도록 하겠습니다. 네트워크는 네트워크에 속한 컴퓨터나 통신 장비들(=노드)이 데이터를 공유할 수 있게 하는 디지털 전기 통신망의 하나로, 분산되어 있는 컴퓨터들은 통신망으로 연결되어 서로 데이터를 교환할 수 있습니다. 두 대만 있더라도 네트워크라 부를 수 있으며, 인터넷은 이러한 네트워크 중 하나로 전 세계의 크고 작은 네트워크들이 연결되어 있는 것을 의합니다. 네트워크의 분류 네트워크는 범위에 따라 LAN , WAN, ..
2023.07.10 -
운이 좋게도 SSAFY 10기에 합격하게 되어 어떻게 준비했는지를 공유하고 이랬다면 더 좋지 않았을까에 대한 회고를 해보려고 합니다. SSAFY 란? 삼성 청년 SW 아카데미(SSAFY)는 삼성의 SW 교육 경험과고용 노동부의 취업지원 노하우를 바탕으로 취업 준비생에게 SW 역량 향상 교육 및 다양한 취업지원 서비스를 제공하여 취업에 성공하도록 돕는 프로그램 쉽게 이야기해서 삼성과 고용노동부가 합작하여 IT 인재를 양성하는 프로그램입니다. 2018년 1기부터 시작하여 현재 2023년 10기까지 이어져오고 있습니다. SSAFY는 교육생들이 온전하게 공부에 집중할 수 있도록 다양한 지원을 하고 있습니다. 그렇기 때문에 다른 부트캠프나 국비학원에 비해 아웃풋이 더 좋은 게 아닌가 하는 생각이 듭니다 ㅎㅎ 지원..
SSAFY 10기 준비 과정 및 합격 후기 (비전공자 -> 전공반)운이 좋게도 SSAFY 10기에 합격하게 되어 어떻게 준비했는지를 공유하고 이랬다면 더 좋지 않았을까에 대한 회고를 해보려고 합니다. SSAFY 란? 삼성 청년 SW 아카데미(SSAFY)는 삼성의 SW 교육 경험과고용 노동부의 취업지원 노하우를 바탕으로 취업 준비생에게 SW 역량 향상 교육 및 다양한 취업지원 서비스를 제공하여 취업에 성공하도록 돕는 프로그램 쉽게 이야기해서 삼성과 고용노동부가 합작하여 IT 인재를 양성하는 프로그램입니다. 2018년 1기부터 시작하여 현재 2023년 10기까지 이어져오고 있습니다. SSAFY는 교육생들이 온전하게 공부에 집중할 수 있도록 다양한 지원을 하고 있습니다. 그렇기 때문에 다른 부트캠프나 국비학원에 비해 아웃풋이 더 좋은 게 아닌가 하는 생각이 듭니다 ㅎㅎ 지원..
2023.07.08 -
💡 유튜브 이상엽Math 를 보며 정리한 글입니다. 명제와 증명 1️⃣ 명제와 연결사 명제 참, 거짓이 분명히 판단되는 문장 단순 명제 p,q,r 등의 기호로 나타내며, 단일 명제를 의미 ex. 사과는 과일이다. 합성 명제 몇 개의 단순 명제들이 연결사에 의해 결합된 명제 ex. 사과는 과일이고 바나나도 과일이다. 연결사 단순 명제를 연결하는 연결사로 다음과 같은 기호로 나타냅니다. 2️⃣ 진리표 명제의 진리값을 표로 나타낸 것으로 5가지 연결사들에 대한 진리표는 다음과 같습니다. 💡 부가 설명 진리집합이란 해당 명제가 참이되도록 하는 모든 원소들의 집합입니다. 명제 p의 진리집합은 p → P 로 나타냅니다. ex. p : ~는 과일이다. P = { 사과, 포도, 바나나 } 이 때, p 가 F라는 의미는..
집합론 - 명제와 논리💡 유튜브 이상엽Math 를 보며 정리한 글입니다. 명제와 증명 1️⃣ 명제와 연결사 명제 참, 거짓이 분명히 판단되는 문장 단순 명제 p,q,r 등의 기호로 나타내며, 단일 명제를 의미 ex. 사과는 과일이다. 합성 명제 몇 개의 단순 명제들이 연결사에 의해 결합된 명제 ex. 사과는 과일이고 바나나도 과일이다. 연결사 단순 명제를 연결하는 연결사로 다음과 같은 기호로 나타냅니다. 2️⃣ 진리표 명제의 진리값을 표로 나타낸 것으로 5가지 연결사들에 대한 진리표는 다음과 같습니다. 💡 부가 설명 진리집합이란 해당 명제가 참이되도록 하는 모든 원소들의 집합입니다. 명제 p의 진리집합은 p → P 로 나타냅니다. ex. p : ~는 과일이다. P = { 사과, 포도, 바나나 } 이 때, p 가 F라는 의미는..
2023.06.30 -
개요 AI와 머신러닝, 딥러닝... 이름들만 들어봤지 자세히 뭐가 뭔지 모르고 지나쳤는데요. 이 참에 정리해 볼 생각입니다. 앞에선 인공지능과 각종 개념들의 정리를, 뒤에선 사회적 이슈에 대해서 다뤄볼 생각입니다. 우선 간단하게 살펴보자면 각각은 다음과 같습니다. 인공지능 (A.I , Artificial Intellgence) 인공지능(A.I)란 사람처럼 학습능력, 추론능력, 지각능력이 필요한 작업을 할 수 있는 컴퓨터 시스템을 만드는 기술입니다. 쉽게 말해, 인간의 지능을 기계에 인공적으로 구현하려는 기술이라고 볼 수 있습니다. 🚀 인공지능의 단계 인공지능은 세 가지 단계로 분류할 수 있습니다. 첫 번째 단계는 약인공지능(Artificail Narrow Intelligence, ANI)으로 유용한 도구..
AI 간단 정리개요 AI와 머신러닝, 딥러닝... 이름들만 들어봤지 자세히 뭐가 뭔지 모르고 지나쳤는데요. 이 참에 정리해 볼 생각입니다. 앞에선 인공지능과 각종 개념들의 정리를, 뒤에선 사회적 이슈에 대해서 다뤄볼 생각입니다. 우선 간단하게 살펴보자면 각각은 다음과 같습니다. 인공지능 (A.I , Artificial Intellgence) 인공지능(A.I)란 사람처럼 학습능력, 추론능력, 지각능력이 필요한 작업을 할 수 있는 컴퓨터 시스템을 만드는 기술입니다. 쉽게 말해, 인간의 지능을 기계에 인공적으로 구현하려는 기술이라고 볼 수 있습니다. 🚀 인공지능의 단계 인공지능은 세 가지 단계로 분류할 수 있습니다. 첫 번째 단계는 약인공지능(Artificail Narrow Intelligence, ANI)으로 유용한 도구..
2023.06.02 -
Dev Home 이번 Microsoft Build 2023에서 Dev Home이라는 기능을 소개했습니다. 내용을 간략하게 살펴보면, 윈도우 운영체제가 개발환경 설정을 도와준다는 내용입니다. 기능은 다음과 같습니다. 사용자 설정이 가능한 위젯 대시보드로 개발환경 설정이 가능 앱, 패키지, 저장소 등 개발에 필요한 환경 셋업 Github와 같은 개발 툴과의 연결 프로젝트 파일 및 Git Repo를 저장할 Dev Drive 생성 시스템 실시간 정보 확인 워크플로 모니터링 한가지 재미있는 점은 코파일럿을 이용해 빌드 오류를 해결하는 모습인데요. MS가 OpenAI에 투자하면서 AI 기술을 적극적으로 자사 제품에 도입하고 있는 만큼, 앞으로도 그러한 기술들을 플러그인 형태로 자사 제품에 제공하고 사용하는 모습을 ..
MSBuild 2023 - Microsoft Dev HomeDev Home 이번 Microsoft Build 2023에서 Dev Home이라는 기능을 소개했습니다. 내용을 간략하게 살펴보면, 윈도우 운영체제가 개발환경 설정을 도와준다는 내용입니다. 기능은 다음과 같습니다. 사용자 설정이 가능한 위젯 대시보드로 개발환경 설정이 가능 앱, 패키지, 저장소 등 개발에 필요한 환경 셋업 Github와 같은 개발 툴과의 연결 프로젝트 파일 및 Git Repo를 저장할 Dev Drive 생성 시스템 실시간 정보 확인 워크플로 모니터링 한가지 재미있는 점은 코파일럿을 이용해 빌드 오류를 해결하는 모습인데요. MS가 OpenAI에 투자하면서 AI 기술을 적극적으로 자사 제품에 도입하고 있는 만큼, 앞으로도 그러한 기술들을 플러그인 형태로 자사 제품에 제공하고 사용하는 모습을 ..
2023.06.01 -
🌎 위상 정렬 (Topology Sort) 위상 정렬이란 사이클이 없는 방향 그래프에서 노드 순서를 찾는 알고리즘입니다. 보통 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용합니다. 한 가지 예를 소개하겠습니다. 위의 그래프는 일련의 순서(방향)들이 정해져있으며, 사이클이 존재하지 않습니다. 이 그래프에서 대학생 되기부터 졸업하기까지 가는 순서(위상 정렬)를 찾아보면 다음과 같습니다. 하지만 다음과 같이 도달할 수 있습니다. 이처럼 위상 정렬에서는 항상 유일한 값으로 정렬되지 않습니다. 더불어, 사이클이 존재하면 노드 간의 순서를 명확하게 정의할 수 없으므로 위상 정렬을 적용할 수 없습니다. 🎢 진입차수와 진출 차수 위상 정렬에 대해 더 자세히 알아보기 전에 두가지 개념을 알고 넘어가야합..
알고리즘 - 위상 정렬🌎 위상 정렬 (Topology Sort) 위상 정렬이란 사이클이 없는 방향 그래프에서 노드 순서를 찾는 알고리즘입니다. 보통 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용합니다. 한 가지 예를 소개하겠습니다. 위의 그래프는 일련의 순서(방향)들이 정해져있으며, 사이클이 존재하지 않습니다. 이 그래프에서 대학생 되기부터 졸업하기까지 가는 순서(위상 정렬)를 찾아보면 다음과 같습니다. 하지만 다음과 같이 도달할 수 있습니다. 이처럼 위상 정렬에서는 항상 유일한 값으로 정렬되지 않습니다. 더불어, 사이클이 존재하면 노드 간의 순서를 명확하게 정의할 수 없으므로 위상 정렬을 적용할 수 없습니다. 🎢 진입차수와 진출 차수 위상 정렬에 대해 더 자세히 알아보기 전에 두가지 개념을 알고 넘어가야합..
2023.05.29 -
유클리드 호제법 (Euclidean-Algorithm) 유클리드 호제법이란 정수론에서 다루는 내용으로, 두 수의 최대 공약수(gcd)를 구하는 알고리즘입니다. 일반적으로 최대 공약수를 구할 때 소인수분해를 이용할 수도 있지만, 유클리드 호제법을 이용하면 조금 더 간단하게 구할 수 있습니다. 일단 알려져 있는 공식은 다음과 같습니다. 두 양의 정수 a, b ( a > b )에 대하여 a = bq(몫) + r(나머지) ( 0 ≤ r < b )이라 하면, a, b의 최대공약수는 b, r의 최대공약수와 같다. 즉, gcd(a, b) = gcd(b, r) r = 0이라면, a, b의 최대공약수는 b가 된다. 🔨 구현 mod(나머지, %) 연산을 이용해서 구현하며, 다음과 같은 과정으로 최대 공약수를 구할 수 있습..
알고리즘 - 유클리드 호제법유클리드 호제법 (Euclidean-Algorithm) 유클리드 호제법이란 정수론에서 다루는 내용으로, 두 수의 최대 공약수(gcd)를 구하는 알고리즘입니다. 일반적으로 최대 공약수를 구할 때 소인수분해를 이용할 수도 있지만, 유클리드 호제법을 이용하면 조금 더 간단하게 구할 수 있습니다. 일단 알려져 있는 공식은 다음과 같습니다. 두 양의 정수 a, b ( a > b )에 대하여 a = bq(몫) + r(나머지) ( 0 ≤ r < b )이라 하면, a, b의 최대공약수는 b, r의 최대공약수와 같다. 즉, gcd(a, b) = gcd(b, r) r = 0이라면, a, b의 최대공약수는 b가 된다. 🔨 구현 mod(나머지, %) 연산을 이용해서 구현하며, 다음과 같은 과정으로 최대 공약수를 구할 수 있습..
2023.05.25 -
오일러 피 함수 (Euler phi function) 알고리즘 문제에서 주로 나오는 정수론 중 하나인 오일러 피 함수입니다. 오일러 피 함수란 다음과 같습니다. 쉽게 말해, 1부터 n까지 범위에서 n과 서로소인 자연수의 개수를 뜻합니다. 🎈 서로소란 공약수가 1뿐이 없는 두 정수를 의미합니다. 예를 들어, 1 ~ 10 까지 범위에서 10과 서로소인 자연수를 나열해보면 다음과 같습니다. 1 , 3, 7, 9 🔨 구현 다음과 같은 과정을 통해 오일러 피 함수를 프로그래밍 언어로 구현할 수 있습니다. 📌 1. 구하고자 하는 오일러 피의 범위만큼 배열을 초기화 📌 2. 2부터 시작해 현재 배열의 값과 인덱스가 같으면(=소수일 때) 현재 선택된 숫자(K)의 배수에 해당하는 수를 배열 끝까지 탐색하며 P[i] = ..
알고리즘 - 오일러 피 함수오일러 피 함수 (Euler phi function) 알고리즘 문제에서 주로 나오는 정수론 중 하나인 오일러 피 함수입니다. 오일러 피 함수란 다음과 같습니다. 쉽게 말해, 1부터 n까지 범위에서 n과 서로소인 자연수의 개수를 뜻합니다. 🎈 서로소란 공약수가 1뿐이 없는 두 정수를 의미합니다. 예를 들어, 1 ~ 10 까지 범위에서 10과 서로소인 자연수를 나열해보면 다음과 같습니다. 1 , 3, 7, 9 🔨 구현 다음과 같은 과정을 통해 오일러 피 함수를 프로그래밍 언어로 구현할 수 있습니다. 📌 1. 구하고자 하는 오일러 피의 범위만큼 배열을 초기화 📌 2. 2부터 시작해 현재 배열의 값과 인덱스가 같으면(=소수일 때) 현재 선택된 숫자(K)의 배수에 해당하는 수를 배열 끝까지 탐색하며 P[i] = ..
2023.05.25 -
문제 1456번: 거의 소수 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. www.acmicpc.net 풀이 💡 제가 푼 방법보다 더 좋은 방법이 있을 수 있습니다. 이렇게 푸는게 항상 정답은 아니니 참고하셔야 합니다. 범위는 1 ~ 10¹⁴로 입력값을 담는 타입은 long을 이용해야 합니다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); long A = Long.parseLong(s..
백준 - 1456: 거의 소수문제 1456번: 거의 소수 어떤 수가 소수의 N제곱(N ≥ 2) 꼴일 때, 그 수를 거의 소수라고 한다. 두 정수 A와 B가 주어지면, A보다 크거나 같고, B보다 작거나 같은 거의 소수가 몇 개인지 출력한다. www.acmicpc.net 풀이 💡 제가 푼 방법보다 더 좋은 방법이 있을 수 있습니다. 이렇게 푸는게 항상 정답은 아니니 참고하셔야 합니다. 범위는 1 ~ 10¹⁴로 입력값을 담는 타입은 long을 이용해야 합니다. BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); long A = Long.parseLong(s..
2023.05.24 -
소수 (Prime Number) 소수란 자신보다 작은 2개의 자연수를 곱해 만들 수 없는 1보다 큰 자연수를 의미합니다. 알고리즘에서 소수를 구하는 문제가 간혹 나오곤 하기 때문에 어떤 식으로 소수를 구하는지 알아두면 좋습니다. 브루트 포스로 구하기 가장 간단한 방법으로 2부터 n-1까지 돌면서 약수가 있는지 확인하는 방법입니다. public static boolean isPrime(int n) { if(n < 2) return false; for (int i = 2; i < n ; i++) { if(n % i == 0) return false; } return true; } 하지만 위의 경우 O(N)의 시간복잡도를 가지므로, 큰 수 여러 개가 소수인지 파악할 땐, 효율적이지 못합니다. 위의 방식을 조금..
알고리즘 - 소수 구하기소수 (Prime Number) 소수란 자신보다 작은 2개의 자연수를 곱해 만들 수 없는 1보다 큰 자연수를 의미합니다. 알고리즘에서 소수를 구하는 문제가 간혹 나오곤 하기 때문에 어떤 식으로 소수를 구하는지 알아두면 좋습니다. 브루트 포스로 구하기 가장 간단한 방법으로 2부터 n-1까지 돌면서 약수가 있는지 확인하는 방법입니다. public static boolean isPrime(int n) { if(n < 2) return false; for (int i = 2; i < n ; i++) { if(n % i == 0) return false; } return true; } 하지만 위의 경우 O(N)의 시간복잡도를 가지므로, 큰 수 여러 개가 소수인지 파악할 땐, 효율적이지 못합니다. 위의 방식을 조금..
2023.05.24