전체 글

전체 글

    [자바의 정석] 2장 변수

    변수 변수란? 프로그래밍에서의 변수는 값을 저장할 수 있는 메모리상의 공간을 의미한다. "변수란, 단 하나의 값을 저장할 수 있는 메모리 공간" 변수의 선언과 초기화 int age; // age 라는 이름의 변수 선언 변수타입은 변수에 저장될 값이 어떤 '타입'인지를 저장하는 것 변수이름은 메모리 공간에 이름을 붙여주는 것 📌 변수의 초기화 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수 없는 값(쓰레기 값)'이 남아있을 수 있기 때문에 반드시 초기화를 해주어야 한다. "변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것" 예시 class Variable { publci static void main(String[] arg..

    [자바의 정석] 1장 자바를 시작하기 전에

    자바란 1996년 썬마이크로시스템즈에서 개발하고 발표한 객체지향 프로그래밍 언어이다. 운영체제에 독립적이라 운영체제의 종류에 관계없이 실행이 가능하다. 즉 이식성이 높다. 자바의 특징 운영체제의 독립적 객체지향 언어 비교적 배우기 쉬움 자동 메모리 관리(Garbage Collection) 네트워크와 분산처리를 지원 멀티쓰레드 지원 동적 로딩(Dynamic Loading) 지원 JVM(Java Virtual Machine) JVM을 직역하면 '자바를 실행하기 위한 가상 기계'라 할 수 있다. 일반적인 프로그램은 OS만 거치고 실행되는데 자바 애플리케이션은 JVM을 한 번 더 거쳐서 실행된다. 자바 애플리케이션은 JVM 하고만 상호작용을 하기 때문에 다른 OS에서도 프로그램의 변경 없이 실행이 가능하다. 단..

    [Clean Code] 1장 - 깨끗한 코드

    코드가 존재하리라 이 책은 코드를 다루는 책이다. 코드를 자동으로 생성하는 시대가 다가온다고 코드는 사라지지않는다. 왜냐하면 코드는 요구사항을 상세히 표현하는 수단이기 때문에 코드의 도움 없이 요구사항을 상세하게 표현하기는 불가능하고 추상화도 불가능하다. 우리 프로그래밍 언어가 추상화 수준이 점차 높아지고 있고, 특정 응용 분야에서 적합한 프로그래밍 언어(domain-specific language[1]) 수도 점차 많아지는 것은 바람직한 현상이다. 궁극적으로 코드는 요구사항을 표현하는 언어라는 사실을 명심한다 나쁜 코드 Killer App 하나로 대박난 회사가 있었지만 얼마 못가 망했다. 그 원인은 출시에 맞추기 위해, 기능을 더 추가하기 위해 나쁜 코드를 방치했기 때문이다. 급해서 서두르느라 나쁜 코..

    [Java] Map for-each문 사용 방법

    [Java] Map for-each문 사용 방법

    map m; for (auto it : m) { cout

    [C++] 코테 준비 -  문자열 분리

    [C++] 코테 준비 - 문자열 분리

    카카오 코딩테스트 문제를 풀다보면 문자열을 분리하여 푸는 문제가 많다. c++은 따로 문자열 분리하는 STL이 존재하지 않아 split을 구현해야 한다. 그래서 문자열 처리할 때마다 검색해서 문제를 풀었는데 검색하는 것이 귀찮아서 내가 검색한 내용을 정리하기로 했다. istringstream 과 getline() 함수 사용 istringstream을 사용하려면 sstream 헤더 파일을 선언해야 한다. 헤더 파일을 일일이 선언할 필요없는 bits/stdc++.h를 애용하자! OSX bits/stdc++.h 적용 방법 Xcode bits/stdc++.h 사용하기 Xcode bits/stdc++.h 사용하기 터미널 창에 아래와 같이 입력 $ cd /Applications/Xcode.app/Contents/D..

    Xcode bits/stdc++.h 사용하기

    Xcode bits/stdc++.h 사용하기

    Xcode bits/stdc++.h 사용하기 1.터미널 창에 아래와 같이 입력 $ cd /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1 2.bits 디렉터리 생성하고 이동 $ mkdir bits && cd ./bits 3.밑에 링크를 들어가서 내용을 복사하고 "stdc++.h"를 생성한 후 붙여넣음 $ touch stdc++.h stdc++.h Linux GCC 4.8.0 /bits/stdc++.h header definition with error fixed. Linux GCC 4.8.0 /bits/stdc++.h header definition w..

    [자바] 프로그래머스 - 위장 (Level 2)

    [자바] 프로그래머스 - 위장 (Level 2)

    🔗 문제 링크 코딩테스트 연습 - 위장 programmers.co.kr 📂 분류 해시, 조합 💡 풀이 처음 풀이는 부분 집합과 경우의 수를 구하는 공식을 이용하여 접근해서 풀었다. 하지만 이렇게 풀었더니 1번 테스트케이스만 시간 초과가 떠서 만점을 받지 못했다. 시간을 어떻게 줄여야할지 생각이 나지않아서 질문하기를 참고했는데 모든 조합을 구할 필요 없이 안입는 경우를 더해 경우의 수를 구하면 됐다. 풀이 과정 주어진 clothes메서드를 의상 종류를 key로 두고 value는 해당하는 key의 개수로 둬서 Map에 저장한다. 각 해당하는 의상 종류의 개수를 +1 해주고 경우의 수를 구한다. 모든 옷을 안입는 경우는 없으니 return할땐 -1을 해준다. 💻 코드 만점 코드 import java.util...

    [자바] 프로그래머스 - 다리를 지나는 트럭

    [자바] 프로그래머스 - 다리를 지나는 트럭

    🔗 문제 링크 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 📂 분류 시물레이션 큐 💡 풀이 문제 설명에 트럭의 전진이 안나와있어서 이해하는데 좀 오래걸렸는데 질문목록을 보니 나만 그런게 아니였다. 다리를 큐로 선언하고, 트럭들을 큐에 넣고 빼주는 것을 구현하면 된다. 큐에 트럭을 넣을 수 있는 조건은 큐가 비어있는 경우 큐가 가득차지 않은 경우 무게가 초과 되지않은 경우 이렇게 3가지가 있다. 위 조건이 만족하지 않으면 다음 트럭이 다리는 지날 수 있도록 0을 넣어주면서 poll..