본문 바로가기

전체 글

(470)
[프로그래머스] 특별한 이차원 배열2 2중 for문 사용하기for (int i = 0; i arr[i][j] 와 arr[j][i] 비교하기다르다면 false 또는 0을 반환하기 이 문제의 목표는 주어진 2차원 배열이 대칭인지 확인하는 것입니다. 대칭이란, 배열의 요소 arr[i][j]와 arr[j][i]가 항상 동일해야 함을 의미합니다. 이 특성을 확인하기 위해 2중 for문을 사용하여 모든 요소를 순회하면서 비교합니다.만약 한 쌍이라도 다른 값이 발견되면, 배열은 대칭이 아니므로 0을 반환하고, 모든 비교가 통과되면 1을 반환합니다.  정답은 더보기 클릭더보기class Solution { public int solution(int[][] arr) { // 2차원 배열의 모든 요소를 확인하기 위한 2중 for문 ..
[프로그래머스] 멀리뛰기 n의 경우의 수:n = 1일 때: 1가지 경우의 수 (1)n = 2일 때: 2가지 경우의 수 (1, 1), (2)n = 3일 때: 3가지 경우의 수 (1, 1, 1), (1, 2), (2, 1)n = 4일 때: 5가지 경우의 수 (1, 1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (2, 2)n = 5일 때: 8가지 경우의 수 (1, 1, 1, 1, 1), (1, 1, 1, 2), (1, 1, 2, 1), (1, 2, 1, 1), (2, 1, 1, 1), (1, 2, 2), (2, 1, 2), (2, 2, 1)여기서 규칙을 발견할 수 있습니다:n의 경우의 수는 (n-1)의 경우의 수 + (n-2)의 경우의 수입니다.즉, 이 문제는 피보나치 수열 문제라는 것입니다.피보나치란?..
[프로그래머스] 안전지대 문제 풀이 힌트:이중 for 문을 사용하여 보드의 각 위치 (i, j)에 있는 요소가 0인지 확인합니다. 그리고 인접한 모든 요소들이 0인지를 검사하여 모두 0일 때 해당 위치를 안전지대라고 할 수 있습니다.이 힌트를 보러 오신 분들은 아마 인접한 요소들을 탐색하는 방법을 잘 모르기 때문일 것입니다. 예를 들어, (0, 0) 위치에서는 (0, 0), (0, 1), (1, 0), (1, 1)만 비교하면 되지만, (1, 1) 위치에서는 (0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2) 총 9개를 비교해야 하기 때문입니다.안전한지를 확인하는 방법:다른 사람들의 코드와 비교해보면 크게 3가지의 접근 방식이 있습니다.정직하게 모든 경우의..
[프로그래머스] 접미사 배열 코드 힌트:접미사를 가지고 오는 방법은 2가지가 있습니다 1. 역순으로 문자열에서 접미사 추출:문자열을 역순으로 순회하면서 각 인덱스에서부터 문자를 하나씩 가져오는 방법입니다.2. 순서대로 접미사 추출:문자열을 순서대로 탐색하면서 substring() 메서드를 사용하여 접미사를 추출하는 방법입니다.저는 substring을 추천합니다( 처리 속도와 메모리 사용량 면에서도 효율적이라는 장점이 있습니다. )역순으로 꺼내기for (int i = my_string.length()-1; i >= 0; i--) { my_string.charAt(i)를 사용하여 해당 값을 꺼냅니다}substring을 사용하여 자르기for (int i = 0; i 정렬: Arrays.sort() 메서드를 사용하여 문자열 배열을 사..
[프로그래머스] 약수의 합 문제 설명: 주어진 숫자 n의 모든 약수들의 합을 구하는 문제입니다. 예를 들어, n이 12일 때 약수는 1, 2, 3, 4, 6, 12이며, 이들의 합은 28입니다.약수를 구하는 방법: 약수의 공통점은 n % i == 0이라는 것입니다. 예를 들어, 12의 약수들을 보면 다음과 같습니다:12 % 1 == 012 % 2 == 012 % 3 == 012 % 4 == 012 % 6 == 012 % 12 == 0즉, n의 약수를 구하기 위해 1부터 n까지의 수를 반복하면서 n % i == 0인 i를 찾으면 됩니다.이를 코드로 구현하면 다음과 같습니다:for (int i = 1; i  더 효율적인 방법: 위의 방법은 1부터 n까지 모두 반복하기 때문에 비효율적일 수 있습니다. 약수의 또 다른 특징을 이용해 더 ..
[프로그래머스] 두 정수 사이의 합 변수 초기화:result: 최종 합계를 저장하는 변수로 초기 값은 0입니다.start와 end: 시작 값과 끝 값을 저장하는 변수로, 초기 값은 0입니다.시작 값과 끝 값 설정:a와 b의 크기를 비교하여, 더 작은 값을 start로, 더 큰 값을 end로 설정합니다.이를 통해 항상 작은 값부터 큰 값까지의 합을 구할 수 있습니다.for 루프를 통한 합산:start부터 end까지 모든 정수를 순회하며 result에 더합니다.결과 반환:최종 합계를 result에 저장하고 반환합니다.추가 힌트:삼항 연산자를 사용하면 코드를 더 간결하게 만들 수 있습니다:int start = a b ? a : b;Math를 활용하면 삼항 연산자를 사용하지 않고 더욱 더 간결하게 만들 수 있습니다:Math.min(a,b);Ma..
[Spring Boot] IoC/DI IoC란?IoC는 Inversion of Control의 약자로, 제어의 역전이라는 뜻을 가지고 있습니다.자바에서 객체를 생성하기 위해서는 필요한 곳에서 직접 생성을 합니다.public class A { B b = new B();} 제어의 역전(IoC)은 다른 객체를 직접 생성하거나 제어하는 것이 아니라, 외부에서 관리하는 객체를 가져와 사용하는 것을 말합니다. 외부에서 객체 가져오기public class A { private B b;}이전과 다르게 new 키워드를 사용하지 않으며, B 객체를 직접 생성하는 것이 아니라 외부에서 객체를 받아와서 사용하고 있습니다. 쉽게 설명하기 위해 "외부"라고 표현했지만, 정확하게는 스프링의 스프링 컨테이너에서 객체를 받아와서 사용하고 있습니다.  DI란?D..
[컴퓨터 구조] 레지스터 종류와 특징 레지스터란?레지스터는 CPU의 임시 저장 장치입니다. 데이터와 명령어를 실행 전후로 레지스터에 저장하며 사용합니다. 레지스터의 역할레지스터는 다양한 종류가 있으며 각기 다른 역할과 특징을 가지고 있습니다. 이번에는 공통적으로 CPU에서 사용되는 8개의 레지스터를 설명하겠습니다. 레지스터의 종류 8가지프로그램 카운터 (PC)명령어 레지스터 (IR)메모리 주소 레지스터 (MAR)메모리 버퍼 레지스터 (MBR)플래그 레지스터 (FR)범용 레지스터 (GPR)스택 포인터 (SP)베이스 레지스터 (BR)프로그램 카운터 (Program Counter, PC)Program Counter는 다음에 실행할 명령어의 메모리 주소를 가지고 있는 레지스터입니다. 현재 실행 중인 명령어의 메모리 주소가 4번지라면, 프로그램 카운..