전체 글

주니어 개발자의 항해 일지
PS/Programmers

[level1, 진법] 3진법 뒤집기

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 int n // 10진법으로 주어진 수 요구되는 것 int answer // 3진법으로 바꾸고 역순 정렬 후, 10진법으로 변환한 수 데이터 구조 결정 String, Integer, StringBuilder 클래스의 메서드 사용 StringBuilder와 반복문을 사용 알고리즘 설계 String, Integer, StringBuilder 클래스의 메서드 Integer.toString을 이용한 10진법 -> n진법 변환 StringBuilder를 이용한 역순 정렬 Integer.parseInt를 이용한 n진법 -> 10진법 변환 StringBuilder와 반복문 3. 코드 구현 3-1. String, Integer, StringBuilder 클래스 cl..

PS/Programmers

[level1, Stack/Queue] 같은 숫자는 싫어

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 int[] arr //0보다 크거나 같고 9보다 작거나 같은 정수를 원소로 하는 배열 요구되는 것 int[] answer //중복된 원소만 제거된 배열 데이터 구조 결정 방법 1. List, ArrayList 구조 사용 Collection 인터페이스를 구현하고 있는 List 인터페이스의 사용 List 인터페이스의 주요 메서드 add(E element) -> 반환 값 boolean get(int index) -> 반환 값 E element isEmpty() -> 반환 값 boolean size() -> 반환 값 int sort(Comparator

PS/Programmers

[level1, 유클리드 호제법] 최대공약수와 최소공배수

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 int n, int m //임의의 두 자연수 요구되는 것 두 수의 최대공약수(GCD) 최소공배수(LCM) 데이터 구조 결정 유클리드 호제법 기본 원리 두 수의 GCD(최대공약수, Greatest Common Divisor)를 찾는 알고리즘 두 양의 정수 a와 b(a > b)가 주어졌을 때, a를 b로 나눈 나머지 r과 b의 GCD는 같다 얻어진 b와 r(b > r)로 b를 r로 나누면 나머지 r2와 r의 GCD는 같다 이와 같은 작업을 반복하여 나머지가 0이 되는 시점에서 나누는 수가 GCD 방법 1. 반복문 사용 방법 2. 재귀 호출 사용 코드가 간결하고 이해하기 쉬움 재귀 호출 횟수가 매우 많아지면 스택 오버플로우가 발생할 가능성이 있음 방법 3...

PS/Programmers

[level1, array] 행렬의 덧셈

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 arr1, arr2 //행과 열의 크기가 같은 임의의 배열 요구되는 것 answer //arr1과 arr2의 각 원소를 더한 배열 데이터 구조 결정 방법 1. 이중 for문 사용 for문을 사용하기 적합한 상황 인덱스에 접근할 필요가 있을 때 (== 순서에 의존하는 작업을 할 때) 요소를 수정하거나 제어해야할 때 코드가 길어지면 가독성이 떨어질 수 있음 요소를 순회하고 값을 읽는 작업, 특정 순서를 따르는 작업에 좋음 방법 2. for - each문 사용 for - each문을 사용하기 적합한 상황 인덱스에 접근할 필요가 없을 때 (== 순서에 의존하지 않는 작업을 할 때) 순회 작업이 간단할 때 간결하고 가독성이 좋음 요소를 순회하고 값을 읽는 작업..

PS/Programmers

[level1, sort] 문자열 내림차순으로 배치하기

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 String s //임의의 정렬할 문자열 요구되는 것 String answer //내림차순 정렬된 문자열 데이터 구조 결정 StringBuilder 사용 문자열을 동적으로 생성 및 수정할 때 유용한 클래스 StringBuilder의 주요 메소드 append() : 문자열 뒤에 추가 insert() : 지정된 위치에 삽입 delete() : 지정된 시작과 끝 인덱스 사이의 문자열 삭제 replace() : 지정된 시작과 끝 인덱스 사이의 문자열을 다른 값으로 대체 reverse() : 문자열을 거꾸로 뒤집기 toString() : StringBuilder 객체를 String 객체로 변환하여 반환 방법 1. 정렬 메소드 사용 Arrays.sort(정렬 대..

PS/Programmers

[level1, StringBuilder] 수박수박수박수?

1. 문제 2. 문제 해결 논리 1. 문제 이해 주어진 것 int n //반복할 횟수 요구되는 것 String //수, 박을 반복하는 문자열 2. 데이터 구조 결정 StringBuilder 사용 문자열을 동적으로 생성하고 수정할 때 유용한 클래스 String은 수정 불가하므로 문자열을 수정할 때마다 새로운 객체가 생성됨. 따라서 메모리 낭비와 성능 저하 StringBuilder의 주요 메소드 append() : 문자열 뒤에 추가 insert() : 지정된 위치에 삽입 delete() : 지정된 시작과 끝 인덱스 사이의 문자열 삭제 replace() : 지정된 시작과 끝 인덱스 사이의 문자열을 다른 값으로 대체 reverse() : 문자열을 거꾸로 뒤집기 toString() : StringBuilder 객..

PS/Programmers

[level1, Map] 신고 결과 받기

1. 문제 2. 문제 해결 논리 문제 이해 주어진 것 String[] id_list //유저 Id 배열 String[] report //신고 정보(신고자, 피 신고자) 배열 int k // 정지 기준 신고 횟수 요구되는 것 int[] //각 유저 별 신고 처리 메일 발송 횟수 배열 데이터 구조 결정 Map 구조 사용 키-값 저장 : 각 유저 별(Key) 유저 정보(Value, 피 신고 횟수 or 신고자 목록) -> Map 사용 빠른 조회 속도 : HashMap(해시 함수 이용) -> 조회 속도 빠름 유연한 사이즈 : Map은 동적으로 크기 조절 가능 -> 유저의 수가 변동될 때에도 구조 유지 가능 알고리즘 설계 각 유저 별 유저 정보를 위한 Map 생성 각 유저 Id와 인덱스를 저장할 Map1 생성 피 ..

Network

최신 Chat GPT-4 사용법

0-1. 사전 준비 구글 계정 또는 마이크로 소프트 계정이 있어야 합니다. 계정이 없다면 만드시고 다음의 1, 2단계를 진행하신 후 나오는 화면에서 Sign up 버튼을 눌러 회원 가입을 진행합시다. 이름(First name), 성(Last Name) 입력 -> 핸드폰 번호 입력 -> 문자로 인증번호를 전송받고 인증 -> 가입 !! 0-2. Chat Gpt 무료 이용 가능 아래에서 설명할 Chat Gpt-4가 아닌 아래 버전의 Chat Gpt는 결제없이 무료로 이용이 가능합니다. 다만 Chat Gpt-4와 다른 점은 답변의 신뢰도, 정확성, 최신의 정보 등이 떨어지는 점이 있습니다. 특수한 경우가 아닌 일반인의 경우, 무료로도 무리없이 충분히 Chat Gpt 사용이 가능합니다. 0-3. Chat Gpt-..

Network

Web Server vs Web Application Server

포함 관계에 대해서.. Web Application Server(이하 WAS)는 Web Server(이하 WS)와 웹 어플리케이션 처리 기능을 모두 포함할 수 있습니다. 이 말은 WAS가 정적 컨텐츠와 동적 컨텐츠의 처리를 모두 담당한다는 의미와 동일합니다. 그러나, 일반적으로 WAS는 WS와 분리되어 구성됩니다. 대규모 시스템의 경우, WAS와 WS를 분리하는 것이 성능, 보안, 관리, 확장성 면에서 유리하기 때문입니다. 이렇게 분리된 WAS와 WS는 서로 협력 관계에 있으며, WS는 정적 컨텐츠를, WAS는 동적 컨텐츠를 담당하여 처리합니다 Web Server(WS, 웹 서버)란? WS는 Static Web Page(정적 웹 페이지) 처리를 담당합니다. WS는 사용자의 웹 페이지에 대한 요청과 응답을..

Network

Static Web Page vs Dynamic Web Page

Static Web Page(정적 웹 페이지)란? 사용자(User)가 요청에 웹 서버에 저장된 컨텐츠들(이미지, JavaScript 등등..)을 가공없이 나타내는 웹 페이지 정적 웹 페이지는 프론트 엔드에서 사용하는 언어인 HTML, CSS, JavaScript 등의 프로그래밍 언어를 사용하여 작성됩니다 사용자(User)와 클라이언트(Client)는 서로 다르다! 사용자(User) : 인터넷을 사용하여 웹 사이트를 이용하는 진짜 사람! 클라이언트(Client) : 웹 서버와 통신하는 소프트웨어 or 하드웨어! 정적 웹 페이지는 보통 정보 제공을 목적으로 사용됩니다.(회사 소개 홈페이지 등..) 자주 업데이트를 하지 않기 때문에 일반적으로 웹 서버에 저장하여 사용됩니다. Static Web Page의 장점..

git-sun
개발 항해 일지