전체 글

Gyoogle (규글)
[Java] 컴파일 과정
·Java
[Java] 컴파일 과정 자바를 많이 사용하기는 하지만, 막상 컴파일 과정을 설명하라하면 말문이 막힌다;; 면접에서도 가끔 나오는 주제이므로 정리해보자 HelloWorld.java 파일을 실행하기 위해 Run 버튼을 눌렀을 때 진행되는 과정은 아래와 같다. 1. HelloWorld.java가 javac.exe을 통해 컴파일 진행 2. HelloWorld.class가 생성됨 ( byte code ) → byte code는 반 기계어 상태로, 컴퓨터가 읽을 수 없다. 따라서 변환 과정이 필요함 3. HelloWorld.class를 java.exe로 실행 4. 클래스 로더를 통해 HelloWorld.class를 JVM으로 가져온다. (JVM은 현재 진행을 시도하는 OS에 맞게 변환시켜줌) 5. Byte Cod..
TDD(Test Driven Development) 이해하기
·정보
TDD(Test Driven Development) TDD : 테스트 주도 개발 '테스트가 개발을 이끌어 나간다.' 우리는 보통 개발할 때, 설계(디자인)를 한 이후 코드 개발과 테스트 과정을 거치게 된다. 하지만 TDD는 기존 방법과는 다르게, 테스트케이스를 먼저 작성한 이후에 실제 코드를 개발하는 리팩토링 절차를 밟는다. 작가가 책을 쓰는 과정에 대해서 생각해보자. 책을 쓰기 전, 목차를 먼저 구성한다. 이후 목차에 맞는 내용을 먼저 구상한 뒤, 초안을 작성하고 고쳐쓰기를 반복한다. 목차 구성 : 테스트 코드 작성 초안 작성 : 코드 개발 고쳐 쓰기 : 코드 수정(리팩토링) 반복적인 '검토'와 '고쳐쓰기'를 통해 좋은 글이 완성된다. 이런 방법을 소프트웨어에 적용한 것이 TDD! (소프트웨어 또한 반..
클린코드(Clean Code)와 리팩토링(Refactoring)
·정보
클린코드와 리팩토링은 의미만 보면 비슷하다고 느껴진다. 어떤 차이점이 있을지 생각해보자 클린코드 클린코드란, 가독성이 높은 코드를 말한다. 가독성을 높이려면 다음과 같이 구현해야 한다. - 네이밍이 잘 되어야 함 - 오류가 없어야 함 - 중복이 없어야 함 - 의존성을 최대한 줄여야 함 - 클래스 혹은 메소드가 한가지 일만 처리해야 함 얼마나 코드가 잘 읽히는 지, 코드가 지저분하지 않고 정리된 코드인지를 나타내는 것이 바로 '클린 코드' 1 2 3 4 5 6 public int AAA(int a, int b){ return a+b; } public int BBB(int a, int b){ return a-b; } cs 두 가지 문제점이 있다. 1 2 3 4 5 6 7 public int sum(int a..
삼성 상시 SW 역량테스트 A형 후기
·정보
삼성에서 주최하는 소프트웨어 역량테스트 시험이다. 최근 상시로 변경되면서 시험 횟수도 많아졌다. (단, 1년에 3회로 제한되어있다.) 사이트 : 링크 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com 회원가입 후, 사이트에 올라온 문제를 주어진 난이도에 맞는 3문제를 풀면 응시 지원이 가능하다. 일정은 사이트에서 직접 확인해야하고, 시험 접수하는 사람이 워낙 많기 때문에 열린 후 바로 신청하지 않으면 바로 마감되므로 조심해야 한다. A형이 검정 유형 중에서는 가장 낮은 난이도지만, 실제 입사 전에 진행되는 코딩테스트 난이도와 같은 수준이다. C형은 실제 실무자도 많이 갖고 있지 않다고 하니.. 극악의 난이..
객체지향 프로그래밍(OOP)이란?
·정보
객체지향 프로그래밍 보통 OOP라고 많이 부른다. 객체지향은 수 없이 많이 들어왔지만, 이게 뭔지 설명해달라고 하면 어디서부터 해야할 지 막막해진다.. 개념을 잡아보자 객체지향 패러다임이 나오기 이전의 패러다임들부터 간단하게 살펴보자. 패러다임의 발전 과정을 보면 점점 개발자들이 편하게 개발할 수 있도록 개선되는 방식으로 나아가고 있는 걸 확인할 수 있다. 가장 먼저 순차적, 비구조적 프로그래밍이 있다. 말 그대로 순차적으로 코딩해나가는 것! 필요한 게 있으면 계속 순서대로 추가해가며 구현하는 방식이다. 직관적일 것처럼 생각되지만, 점점 규모가 커지게 되면 어떻게 될까? 이런 비구조적 프로그래밍에서는 goto문을 활용한다. 만약 이전에 작성했던 코드가 다시 필요하면 그 곳으로 이동하기 위한 것이다. 점점..
[Git] git bash 사용법
·정보
Git 사용법 Git Bash 터미널을 열어 사용해보자! 명령어cd [폴더 이름] : 해당 디렉토리로 이동x$ cd documents : 현재폴더의 하위폴더인 documents 폴더로 이동$ cd /c/workspace : 절대경로 /c/workspace 로 이동$ cd .. : 상위 폴더로 이동 mkdir [폴더 이름] : 디렉토리 생성x$ mkdir test : 현재 위치에 test 디렉토리 생성touch [파일 이름] : 빈 파일 생성xxxxxxxxxx$ touch index.txt : 현재 위치에 index.txt 파일을 생성ls : 현재 디렉토리 폴더, 파일을 보여줌xxxxxxxxxx$ ls Git 사용사용자 등록user.email과 user.name을 등록한다.x$ git config --gl..
[백준 14889] 스타트와 링크 (Java)
[백준 14889] 스타트와 링크 (Java) 문제 출처 : 링크 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net 삼성 SW역량테스트 기출 문제다. 정답률도 매우 높고, 실제로 다른 기출문제에 비해 상당히 쉬운편이다. 짝수로 주어진 사람 수를 2팀으로 나누고, 문제에 주어진 능력치 값을 구해 두 팀의 최소차를 출력해주면 된다. 조합을 짤 수만 있다면 간단히 해결이 가능하다. 조합에서 팀이 나누어지는 상황마다 각 팀의 능력치 값을 구하고 절대값을 구한다. 이 절대값 중 가장 작은 값을 출력하면 끝! 1 2 3 4 5 6 7 8 9 1..
[백준 17140] 이차원 배열과 연산 (Java)
[백준 17140] 이차원 배열과 연산 (Java) 문제 출처 : 링크 17140번: 이차원 배열과 연산 첫째 줄에 r, c, k가 주어진다. (1 ≤ r, c, k ≤ 100) 둘째 줄부터 3개의 줄에 배열 A에 들어있는 수가 주어진다. 배열 A에 들어있는 수는 100보다 작거나 같은 자연수이다. www.acmicpc.net 올해 삼성 상반기 오후 기출 문제다. 처음에 글만 보고 문제를 이해하기 힘들었는데 테스트케이스 밑에 자세한 설명이 나와있었다. 실제로 역량테스트를 볼 때는 너무너무 자세한 예시가 나와있으니 문제 이해를 못할 걱정은 크게 걱정하지 않아두 된다ㅎㅎ 이처럼 행과 열의 사이즈를 비교해 숫자의 수만큼 배열을 확장해나가는 방식이다. 행의 길이가 열보다 더 크거나 같으면 → 방향으로 열의 길이..
[백준 17142] 연구소3 (Java, BFS)
[백준 17142] 연구소3 (Java, BFS) 문제 출처 : 링크 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 모두 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 연구소는 크기가 N×N인 정사각형으로 나타낼 수 있으며, 정사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 www.acmicpc.net 올해 상반기 삼성전자 역량테스트 문제다. 예전에 나온 삼성 기출 '연구소'에서 조건만 좀 더 추가된 문제 3가지 조건만 잘 기억하고..
[백준 17143] 낚시왕 (Java)
[백준 17143] 낚시왕 (Java) 17143번: 낚시왕 낚시왕이 상어 낚시를 하는 곳은 크기가 R×C인 격자판으로 나타낼 수 있다. 격자판의 각 칸은 (r, c)로 나타낼 수 있다. r은 행, c는 열이고, (R, C)는 아래 그림에서 가장 오른쪽 아래에 있는 칸이다. 칸에는 상어가 최대 한 마리 들어있을 수 있다. 상어는 크기와 속도를 가지고 있다. 낚시왕은 가장 처음에 1번 열의 한 칸 왼쪽에 있다. 다음은 1초 동안 일어나는 일이며, 아래 적힌 순서대로 일어난다. 낚시왕은 가장 오른쪽 열의 오른쪽 칸에 www.acmicpc.net 올해 상반기 삼성전자 SW역량테스트 기출문제다. 시뮬레이션으로, 주어진 문제를 잘 읽으면서 코드로 옮겨야 한다. 큰 진행 방향은 아래와 같다. 낚시왕이 오른쪽으로 한..
Gyoogle
Gyoogle (규글)