1.디자인 패턴(Design Pattern)이란? 객체지향적인 소프트웨어를 잘 설계한다는 것은 생각보다 쉬운 일이 아닙니다. 지금 당장 갖고 있는 문제를 해결한다에 그치지 않고 나중에 생길 수 있는 문제나 추가된 요구 사항들도 수용할 수 있도록 일반적이고 포괄적으로 설계해야 합니다. 이를 위해 설계할 때 고려사항으로 SOLID 원칙 등 객체지향적 소프트웨어 설계 방법론이 있고 현업에서는 이에 따라 개발하기 위해 노력하고 있습니다. 자, 우리는 Java로 파일 입출력을 어떻게 구현할까요? import java.io.FileInputStream; import java.io.FileOutputStream; public class File{ // ... FileInputStream is = new FileInp..
백준 알고리즘 2475번 Java 풀이 - 검증수 www.acmicpc.net/problem/2475 2475번: 검증수 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들 www.acmicpc.net 문제 컴퓨터를 제조하는 회사인 KOI 전자에서는 제조하는 컴퓨터마다 6자리의 고유번호를 매긴다. 고유번호의 처음 5자리에는 00000부터 99999까지의 수 중 하나가 주어지며 6번째 자리에는 검증수가 들어간다. 검증수는 고유번호의 처음 5자리에 들어가는 5개의 숫자를 각각 제곱한 수의 합을 10으로 나눈 나머지이다. 예를 들어 고유번호의 처음 5자리의 숫자들..
리액트 - setState() 함수 이해하기 setState 개념 리액트에서 props나 state 값이 변경이 되면 해당 컴포넌트의 render() 함수가 다시 호출되며 해당 render() 함수에 속해있는 다른 컴포넌트들도 다시 렌더링되면서 화면이 다시 그려지게 됩니다. 컴포넌트가 생성된 후 state 값을 바꾸는 방법은 setState 함수를 사용합니다. this.state.mode = 'welcome' // 리액트가 state 값이 바뀌었다는 것을 인식하지 못함 -> 렌더링 안됨 this.setState({ mode:'welcome' // state값이 바뀌었다는 것을 인식학고 render가 호출됨 -> 렌더링되면서 화면이 다시 그려짐 }) 주의할 점 render함수 안에서 this는 컴포넌트 자..
[디자인 패턴] 어댑터 패턴(Adapter Pattern) 개념 정리 Adapter Pattern - 어댑터 패턴 (구조 패턴) 이미 만들어진 것을 그대로 사용할 수 없을 때, 필요한 형태로 사용할 수 있게 해주는 패턴. 이미 만들어진 것을 감싸는 형태여서 Wrapper 패턴이라고도 한다. Adapter는 직독하면 "변환기" 정도로 해석됩니다. 핸드폰 충전기 처럼 핸드폰을 콘센트에 직접 접촉시켜 충전하지 않고 충전기라는 어댑터를 통해 핸드폰과 콘센트를 연결하여 충전합니다. 왜 이런 Adapter를 사용하는 것 일까요? 바로 기존에 이미 잘 구축되어 있는 것을 새로운 어떤 것이 사용할 때 양쪽 간의 호환성을 유지해주기 위함입니다. 자바에서도 직접적으로 메서드는 호출하지 않고 중간에 어댑터를 거쳐서 메서드를..
React 리액트에서 bind() 함수 이해하기 (개념 및 사용법) 기본적으로 리액트에서는 render라는 함수 안에서 this는 컴포넌트 자체를 가리키는데 함수에서는 this가 아무값도 없습니다. 이때 bind() 함수를 사용하여 this를 주입하여 주는 겁니다. # bind 함수 이해하기 먼저 var obj = {name : 'Moony'}; 로 obj의 값에 담아놓고 bindTest() 함수로 인해 this.name 값을 출력 시 undefined 이라고 뜨게 됩니다. 이때 bindTest() 메서드가 this가 obj로 바인드 시켜주어 this.name이 'Moony'값을 가져올 수 있게 만들어 주는 것입니다. 자 이제 그럼 obj가 function의 this가 되게 bind() 함수를 사용하여 ..
Each child in a list shoul have a unipue "key" prop 오류 해결 방법 # Each child in a list shoul have a unipue "key" prop. 리액트에서는 여러개의 엘리먼트를 자동으로 생성할 때 생성되는 앨리먼트를 다른 것들과 구분할 수 있도록 식별자(key)를 요구합니다. 리액트 내부적으로 필요로 하기 때문에 요청하는 것이기 때문에 여러개의 데이터를 자동으로 생성할 때 유의하시기 바랍니다. 아래는 자식 컴포넌트에서 props를 리스트 형식으로 받아 자동으로 엘리먼트 여러개를 while문을 통해 만들고 있습니다. 이때{data[i].title} 에서 key(식별자) 값을 주어 에러가 나지 않도록 하였습니다. import React, { Co..
검색의 기술 - 구글링 잘하는 방법 1. "검색어" "검색어"를 이용하여 문장이나 단어를 감싸면 정확히 같은 문장이 포함된 페이지만 검색해 줍니다. ex) "Uncaught ReferenceError: a is not defined" 지원) google, naver, daum 2. * (와일드 카드) 와일드 카드 기능입니다. 코딩을 하면서 java.util.*; 등으로 하는 방식과 동일합니다. * 표시된 부분에 무엇이 들어와도 된다 라는 느낌으로 검색하시면 됩니다. ex) "Uncaught ReferenceError: * is not defined" 지원) google, naver, daum 3. 관계대명사 검색어 관계대명사 키워드로 의도한 바와 적합한 결과를 얻을 수 있습니다. ex) who sql i..
프로그래머스 카카오 크레인 인형 뽑기 게임 - Java programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제 설명 게임개발자인 "죠르디"는 크레인 인형뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은..