분류 전체보기 89

알고리즘 문제

using System;public class Solution { public int solution(int a, int b) { // 두 숫자를 문자열로 붙인 후 정수로 변환 int ab = int.Parse($"{a}{b}"); int ba = int.Parse($"{b}{a}"); // 둘 중 더 큰 값을 반환, 같으면 ab 반환 return ab >= ba ? ab : ba; }} 설명:int.Parse($"{a}{b}"): 문자열 보간을 사용하여 a와 b를 붙인 뒤, 다시 정수로 변환합니다.ab >= ba ? ab : ba: 둘 중 더 큰 값을 리턴합니다. 같을 경우 ab를 반환하므로 조건을 만족합니다.

카테고리 없음 2025.05.12

객체지향의 솔리드 원칙

1. SRP - 단일 책임 원칙클래스는 단 하나의 책임만 가져야 한다.핵심 개념:하나의 클래스는 하나의 변경 이유만 가져야 한다.책임은 변경의 이유와 직결되며, 여러 책임이 있는 클래스는 여러 이유로 변경되어야 하므로 유지보수가 어렵다. 2. OCP - 개방-폐쇄 원칙소프트웨어 요소는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다.핵심 개념:기존 코드를 수정하지 않고도 기능을 확장할 수 있어야 한다.새로운 요구사항이 생겨도 기존 코드에 영향을 주지 않도록 설계한다. 3. LSP - 리스코프 치환 원칙자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 한다.핵심 개념:상속받은 클래스는 부모 클래스의 기능을 깨뜨리지 않고 사용할 수 있어야 한다.“is-a 관계”를 만족해야 하며, 부모 클래스를 사..

카테고리 없음 2025.05.08

알고리즘 문제

public class Solution { public int[] solution(int[] prices) { int n = prices.Length; // 가격 배열의 길이 저장 (초의 개수) int[] answer = new int[n]; // 결과를 저장할 배열 초기화 // i초 시점의 주식 가격에 대해 반복 for (int i = 0; i 풀이입력값: prices = [1, 2, 3, 2, 3]i = 0: 가격 1 → [2, 3, 2, 3] 전부 크거나 같음 → 4초 동안 유지i = 1: 가격 2 → [3, 2, 3] 전부 크거나 같음 → 3초 동안 유지i = 2: 가격 3 → 다음에 2로 떨어짐 → 1초..

카테고리 없음 2025.05.07

알고리즘 문제

using System;public class Solution { public int[] solution(int[] arr, int k) { // 결과를 저장할 배열을 입력 배열과 같은 크기로 초기화 int[] answer = new int[arr.Length]; // k가 홀수인지 짝수인지 판단 if (k % 2 == 1) { // 홀수인 경우 for (int i = 0; i 예시 설명예시 1arr = [1, 2, 3, 100, 99, 98], k = 3 (홀수)모든 원소에 3을 곱함 → [3, 6, 9, 300, 297, 294]예시 2arr = [1, 2, 3, 100, 99, 98], k = 2 (짝..

카테고리 없음 2025.04.30

알고리즘 문제

using System;using System.Collections.Generic;public class Solution { public int[] solution(int n) { // 정수형 리스트 선언 (약수를 저장할 용도) List divisors = new List(); // 1부터 n까지 반복하면서 약수를 찾음 for (int i = 1; i 해석List divisors = new List();-> 약수를 저장할 동적 배열(리스트)을 생성.for (int i = 1; i -> 1부터 n까지 모든 수를 반복하면서 약수를 찾기.if (n % i == 0)-> n이 i로 나누어 떨어지면 i는 n의 약수.divisors.Add..

카테고리 없음 2025.04.25

알고리즘 문제

public class Solution { public int solution(int n) { // 1부터 n까지의 소수를 구하기 위한 배열 // isPrime[i]가 true이면 i는 소수이고, false이면 소수가 아님 bool[] isPrime = new bool[n + 1]; // 0과 1은 소수가 아니므로 false로 설정 isPrime[0] = isPrime[1] = false; // 2부터 n까지 모든 숫자를 소수로 가정 (기본값을 true로 설정) for (int i = 2; i 해석bool[ ] isPrime 배열:이 배열은 각 숫자가 소수인지 아닌지를 나타내는 배열. isP..

카테고리 없음 2025.04.25

알고리즘 문제

public class Solution { // 두 자연수 n과 m을 받아 최대공약수와 최소공배수를 반환하는 함수 public int[] solution(int n, int m) { // 최대공약수(GCD)를 구함 int gcd = GCD(n, m); // 최소공배수(LCM)는 두 수의 곱을 최대공약수로 나눈 것 int lcm = (n * m) / gcd; // 결과 배열: [최대공약수, 최소공배수] return new int[] { gcd, lcm }; } // 최대공약수를 구하는 재귀 함수 (유클리드 호제법 사용) private int GCD(int a, int b) { ..

카테고리 없음 2025.04.25