전체 글 107

[Lv_2] 숫자 변환하기

문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/154538 import java.util.*; class Solution { public int solution(int x, int y, int n) { // set으로 선언해서 같은 값들이 중복생성 되는 것 방지 -> 경우의 수 낮추기 HashSet set = new HashSet(); // 초기값 대입 set.add(x + n); set.add(x * 2); set.add(x * 3); int count = 1; // x와 y가 같은 경우는 count = 0 if (x == y) { return 0; } while (set.size() > 0) { if (set.contains(y)) ..

알고리즘 2023.08.23

클린코드: 애자일 소프트웨어 장인정신

1. 들어가기개발자라면 누구나 올바르게 작성된 코드를 읽으며 즐거움을 느끼거나, 엉망인 코드를 보며 한숨부터 나오는 상황을 겪어본 적이 있을 것입니다. 쉽게 작성된 코드는 무척 중요합니다. 우리는 코딩 대부분의 시간을 코드를 '작성'할때가 아닌 '분석'하는 과정에서 소비하기 때문입니다. 는 설계자가 작성한 코드가 분석되는 시간을 최소화하고 단순하고 직접적인, 의도대로 읽히는 코드를 작성할 수 있는 여러가지의 법칙을 소개합니다.2. 구성책은 초반, 중반, 후반 크게 세 가지의 구성으로 나뉘어집니다. 초반부에서는 클린코드 개념설명, 변수 및 함수의 작명법 등 기초적인 법칙에 대해 설명하고 있으며 중반부에서는 실제 오픈소스 코드를 리팩터링하는 과정이 서술되었습니다. 후반부에서는 소개한 클린코드를 정리하고 마무..

생각 & 리뷰 2023.08.22

[Lv_2] 행렬의 곱셈

class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr2[0].length]; // arr1 행렬 열 순회 for (int i = 0; i < arr1.length; i++) { // arr2 행렬 행 순회 for (int j = 0; j < arr2[0].length; j++) { int sum = 0; // arr1 행렬 행의 각 값과 arr1 행렬의 각 열값을 곱해준다. for (int k = 0; k < arr1[i].length; k++) { sum += arr1[i][k] * arr2[k][j]; } answer[i][j] = sum; } } ret..

알고리즘 2023.08.16