[ 기타 ]

[ 기타 ]/Book Review

[Clean Code] 클린코드 리뷰_ 2장 : 의미있는 이름

의미가 분명한 이름 짓기 2장에서 다룰 내용은 이름짓기이다. 클래스명, 메서드명, 변수명을 봤을때 의미가 분명해야한다. 모호하면 안된다. 첫번째 예시로 든 코드이다. public List getThem(){ List list1 = new ArrayList(); for(int[] x : theList){ if(x[0] == 4){ list1.add(x); } } return list1; } 위의 코드를 보고 뭐하는 코드인지 알 수 있는가? 모른다. 위의 코드에 부가정보를 제공해보겠다. 위의 코드는 지뢰찾기에서 칸 상태를 뜻한다. theList는 보드판이다. x[0] == 4이면, 깃발이 꽂힌 상태이다. 깃발이 꽂힌 상태인 칸들을 list1에 담아 반환해야한다. 위의 정보들 없이 코드만 봐서는 아무것도 알수..

[ 기타 ]/Book Review

[Clean Code] 클린코드 리뷰_ 1장 : 깨끗한 코드

나쁜 코드 나쁜 코드 나쁜코드는 크게 3가지로 나뉜다. 성능이 나쁜 코드 / 의미가 모호한 코드 / 중복된 코드 성능이 나쁜 코드는 쉽다. 불필요한 메모리와 시간을 사용하는 코드이다. 충분히 개선의 여지가 있지만, 개선되지 않은 코드를 말한다. 의미가 모호한 코드는 네이밍과 그 내용이 다른 코드를 말한다. 이름을 딱 보고 어떤 기능을 수행하는 코드인지 알 수 있어야 한다. 비슷한 내용이 중복되는 코드는 버그를 낳기도 하고, 지저분하고 자리만 차지한다. 비슷한 내용이 중복되지 않도록 해야한다. 나쁜 코드로 치르는 대가 나쁜 코드를 짜는 이유는 일정이 촉박해서 일정에 맞춰서 코드를 짜다보면 좋은 코드를 짜겠다는 생각은 뒤로하고 일단 구현에 초점을 맞춰 코드를 짜게되기 때문이다. 나쁜 코드는 생산성을 감소시킨..

[ 기타 ]/끄적끄적...

FrontEnd와 BackEnd의 차이 / 내가 백엔드를 선택한 이유

개발자란? 개발자는 보통 소프트웨어 개발자(Software Developer)를 말한다. 아직 현업에서 일해보지 않았기 때문에 지금 당장은 어디서 주워들은 지식으로 아래 5개의 분야만 떠오른다. 프런트엔드 : 서비스에서 눈에 보이는 화면을 만드는 분야 백엔드 : 서비스에서 눈에 보이지 않는 부분에서 여러 가지 정보를 처리하는 분야 (아래 3개는 사실 잘 모른다.) Data Engineer : 데이터를 다루거나, 빅데이터를 이용해 머신러닝, 딥러닝, 인공지능 등을 다루는 분야 임베디드 : 하드웨어와 가까운 운영체제나, 실제 사용하는 기계(전자레인지) 등을 동작하게 하는 분야..? 보안 : 정보 보호의 관점에서 정보유출을 막는 방법을 연구하여 코드를 짜는 분야..? 이외에도 수많은 분야들이 있는 것으로 알고..

[ 기타 ]/코딩테스트

[JAVA/String] 알고리즘 문제풀이 시 유용한 String 문자열 다루기

comment 알고리즘 문제 풀이시 사용하는 여러가지 메서드나 방법들을 계소해서 추가할 예정 입니다. String을 char형 배열로 변경 - toCharArray() String을 한글자씩 때어내서 Character 형 배열로 바꿔주는 메서드이다. 빈칸도 포함하여 배열에 추가하는것을 볼 수 있다. String str = "hello world!!! "; //str.length() == 15 char[] chars = str.toCharArray(); System.out.println("length = "+chars.length+" "+Arrays.toString(chars)); //출력 : length = 15 [h, e, l, l, o, , w, o, r, l, d, !, !, !, ] String을..

[ 기타 ]/코딩테스트

[백준/JAVA] 5430번 AC / 데크, 자료구조

문제 테스트케이스 첫째줄 (4) : 테스트 케이스 개수 각 테스트 케이스 R과 D로 이루어진 명령어 배열의 길이 배열(문자열로 주어진 배열) 알고리즘 분류 구현, 자료구조, 문자열, 파싱, 데크 자료구조 초기화 substring()을 통해 맨 앞에 ' [ ' , ' ] ' 을 잘라내고, ' , '을 구분자로 하여 split(",")으로 문자열을 쪼개주었다. 여기서 주의할 점은 만약 입력받은 배열 String의 길이가 2인 경우 "[ ]" 으로, 해당 연산을 할 경우 오류가 생긴다. 따라서 arrStr.length() > 2 라는 조건을 걸고 deque에 추가해준다. //arrStr = 입력받은 배열 String Deque deque = new LinkedList(); if(arrStr.length() >..

[ 기타 ]/코딩테스트

[JAVA] 코딩테스트 문제 풀이시 유용한 [ 람다식, 스트림 ] 사용 예제 모음

comment 람다식, 스트림에 익숙해지기 위해 람다식, 스트림을 사용한 풀이방법 일부를 계속해서 추가할 예정입니다. Filter() filter(), chars(), count() 더보기 문제 간단 설명 주어진 문자열에서 p의 개수와 y의 개수가 일치하는지 확인하는 문제 (대소문자 구별 x) boolean solution2(String s) { s = s.toUpperCase(); return s.chars().filter( e -> 'P'== e).count() == s.chars().filter( e -> 'Y'== e).count(); } 해석 boolean solution2_(String s) { s = s.toUpperCase(); IntStream chars = s.chars(); //Str..

[ 기타 ]/코딩테스트

[백준/JAVA] 11866번 : 요세푸스문제 0 / Queue 자료구조

문제 풀러 가기 : https://www.acmicpc.net/problem/11866 이 문제는 Queue 자료구조를 이용하면 매우 간단하다. K회 반복하는 for문을 돌며 queue에서 값을 꺼내고, 다시 넣기를 반복하다가, K번째 반복에서는 다시 넣지 않고 출력하기를 반복하면 된다. 이 반복을 queue.size() == 1이 될때 까지 반복하고, 마지막 남은 원소를 출력하고 마무리 한다. Code import java.util.*; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); StringBui..

[ 기타 ]/코딩테스트

[백준/JAVA] 2805번 : 나무 자르기 (이분탐색)

문제 풀러 가기 -> https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 입력 첫번째 줄을 보자. N은 나무 개수이다. N = 4 M은 필요한 나무의 길이이다. M = 7 두 번째 줄은 각 나무의 길이이다. 풀이 절단기를 몇 m로 설정하고 나무를 베었을 때, 필요한 나무의 길이를 충족하면서 절단기의 높이를 최대가 될 것인가? 절단기의 높이를 설정하면, 그 높이보다 작은 나무는 잘리지 않을 것이고, 절단기 높이..

HSRyuuu
'[ 기타 ]' 카테고리의 글 목록 (5 Page)