전체 글 86

<22.12.24>JAVA 공부 일지 #03. 클래스에 대해 공부해보자

Java는 OOP를 위해 고안된 언어이기 때문에, 모든 것을 클래스로 관리한다. 애초에 프로그램 본문도 "public class 사용자클래스파일이름"으로 시작하니까. 그 외 사용자 정의 클래스를 작성할 수 있다. public class Person { // ... code of Person Class } 기본적으로 위와 같이 사용할 수 있다. 클래스의 껍데기를 생성했다면, 클래스 내부에서 사용할 변수를 선언할 수도 있다. 인스턴스 혹은 클래스에서 사용되는 변수를 선언하는 곳을 클래스 필드(Field)라고 한다. public class Person { private String name; private String gender; private int age; } 초기값을 전달 할 수도 있으나, 추후 생성자..

<22.12.10>JAVA 공부 일지 #02. Call by Value & Call by Reference in Java

0. Intro Call-by-Value와 Call-by-Reference는 프로그래밍 언어에서 함수를 호출 할 때 값을 전달하는 여러가지 방식들 중 일부이다. C계열의 언어에서는 위 종류의 함수 호출 방식을 모두 사용하나, 특정 언어에 따라 일부만 지원할 수도, 혹은 다른 방식을 채용하는 경우도 있다. 본 문서에서는 Call-by-Value와 Call-by-Reference에 대한 개념적인 부분을 살펴보고, Java에서의 Call-by-Value와 Call-by-Reference(줄여서 CbV, CbR이라고 하겠다.)에 대해 알아보고자 한다. 1. Call-by-Value CbV는 값을 전달한다는 의미다. 함수 호출 시 argument로 전달되는 변수를, 단순히 value만 전달한다는 의미이다. 아래 ..

<22.12.03>JAVA 공부 일지 #01. ArrayList에 대해

0. ArrayList ArrayList는 자바에서 제공하는, 배열과 비슷한 자료구조이다. 하지만 기존 배열보다 편리한 기능을 많이 가지고 있다. 형태는 배열과 비슷하며 그 기능 또한 유사하다. 배열과 ArrayList의 차이점을 꼽으라면 아래와 같다. 1. ArrayList는 동적 크기를 가진다. - 일반 배열의 경우, 크기가 정해져있어 선언 시 지정해두었던 size 이상의 값을 담을 수는 없지만, ArrayList는 크기가 정해져있지 않다. 2. ArrayList는 Array에 비해 속도가 느리다. - 일반 배열은 초기화 시 곧바로 메모리에 값들이 할당되기 때문에 ArrayList보다 빠르다. - ArrayList는 데이터 추가 및 삭제 시 메모리를 재할당하기 때문에 속도가 Array보다 느리다. 3..

<22.12.01>프로그래머스 Level 1 문제 풀이 #08

Programmers Level 1 문제 풀이 #08: 22-12-01 8-1) 최소 직사각형 문제) 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납..

Programmers/Level 1 2022.12.01

<22.11.30> 컴퓨터 지식 공부 일지 #15. OAuth2.0에 대해 알아보자

0. What is OAuth 2.0 ? OAuth는 인증을 위한 개방형 표준 프로토콜로써, 서드파티 프로그램(Naver, KAKAO, Google etc)에게 리소스 소유자를 대신하여 리소스 서버에서 제공하는 자원에 대한 접근 권한을 위임하는 기술이다. 즉, 개발자가 만든 서비스에 회원가입, 로그인 기능을 직접 구현하지 않고 Naver, KAKAO, Google에 해당 기능을 위임하고, 유저의 정보를 받아올 수 있다. 또한 서드파티가 가지고 있는 사용자의 리소스 조회와 같은 기능들을 개발자의 어플리케이션에서 수행할 수 있다. 1. OAuth 2.0의 역할 및 주요 개념 OAuth 2.0에서 권한 요청, 인증, 권한 부여를 하는 주체는 크게 네 가지로 구성되어있다. 일반화된 것은 아니며, 상황에 따라 유..

<22.11.29>프로그래머스 Level 1 문제 풀이 #07

Programmers Level 1 문제 풀이 #07 : 22-11-29 7-1) 예산 문제) S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다. 물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다. 부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 re..

Programmers/Level 1 2022.11.29

<22.11.26> React 공부 일지 #05. React에서의 Event Handling

1. Event in React 리액트에서 이벤트를 다루는 방법은 바닐라 JS와는 다르다. 바닐라 JS에서는 DOM API를 통해 직접 HTML 요소에 접근하여 addEventListener라는 메소드를 사용하였지만, 리액트에서는 DOM API에 직접 접근하는 일이 없기에, 요소에 이벤트를 조작하기 위해서는 다른 방법이 필요하다. 리액트에서는 HTML 요소에 인라인으로 이벤트를 붙일 수 있다. 사실 이 것 말고 방법이 있는지 모르겠다. 바닐라 JS에서는 `document.querySelector('click', () => {})`과 같이 썼겠지만, 리액트에서는 아래와 같이 작성해야 한다. const App = () => { return ( (console.log('hello'))}>확인 ) } React..

<22.11.25>프로그래머스 Level 1 문제 풀이 #06

Programmers Level 1 문제 풀이 #06 : 22-11-25 6-1) 이상한 문자 만들기 문제) 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 제한 사항 문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다. 첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다. 내가 작성한 답안) const solution = (s) => { //22-11-25 return s.split(' ').map(str => { return str.split('').m..

Programmers/Level 1 2022.11.25

<22.11.24>프로그래머스 Level 1 문제 풀이 #05

Programmers Level 1 문제 풀이 #05 : 22-11-24 5-1) 문자열 다루기 기본 문제) 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이상, 길이 8 이하인 문자열입니다. s는 영문 알파벳 대소문자 또는 0부터 9까지 숫자로 이루어져 있습니다. 내가 작성한 답안) const solution = (s) => { //22-11-24 if (s.length === 4 || s.length === 6) { return s.match(/[a-zA-Z]/g) === null ? true : false } else..

Programmers/Level 1 2022.11.24

<22.11.23>프로그래머스 Level 1 문제 풀이 #04

Programmers Level 1 문제 풀이 #04 : 22-11-23 4-1) 음양 더하기 문제) 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요. 내가 작성한 답안) const solution = (absolutes, signs) => { //22-11-23 const yinYang = absolutes.map((v, i) => signs[i] ? v : -v) .reduce((acc, cur) => acc + cur); return yinYang; } 4-2) 없는 숫자 더하기 문제) 0부터 ..

Programmers/Level 1 2022.11.23