전체 글

전체 글

    [프로그래머스][Level2][JAVA] 수식 최대화

    [프로그래머스][Level2][JAVA] 수식 최대화

    [문제 설명] https://programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr [풀이 과정] 문제를 해결하는데에 3가지 알고리즘 및 자료구조 지식을 이용했다. 1. 순열 2. 수식의 계산 - 중위표기법, 후위표기법 3. 스택 (2를 계산할 때 3이 사용된다.) 1. 순열 문제에서는 +, -, * 이 세가지 연산자의 우선순위를 자유롭게 재정의 하여 가장 큰 답을 만드는 계산식의 결과를 리턴하라고 한다. +, -, * 의 우선..

    [JAVA] 수식의 계산 - 전위표기법, 중위표기법, 후위표기법

    [JAVA] 수식의 계산 - 전위표기법, 중위표기법, 후위표기법

    수식 표현에는 3가지 방법이 있다. 1. 전위표기법(prefix) 2. 중위표기법(postfix) 3. 후위표기법(infix) 1. 전위 표기법(prefix) - 연산자가 피연산자들 앞에 위치한 수식 2. 중위 표기법(postfix) - 연산자가 피연산자 사이에 위치한 수식 - 주로 사람이 계산하는 방법 3. 후위 표기법(infix) - 연산자가 피연산자들 뒤에 위치한 수식 - 컴파일러가 계산하는 방법 [JAVA code] 중위표기법 -> 후위표기법 으로 변환 /** * 중위 표기식 -> 후위 표기식 * * @param expression * @return */ public static String postfixToInfix(String expression) { String answer = ""; Sta..

    문자열

    문자열

    1. 소문자 대문자 치환 public static void main(String[] args) { String s = "KiMcHoWoN"; System.out.println("대문자로 : " + s.toUpperCase()); System.out.println("소문자로 : " + s.toLowerCase()); } 대문자로 : KIMCHOWON 소문자로 : kimchowon ** 알파벳 이외에 글자들은 toLowerCase(), toUpperCase() 메소드를 사용해도 원래 문자 그대로 반환

    [프로그래머스] [Level2] [JAVA] 행렬의 곱셈

    [프로그래머스] [Level2] [JAVA] 행렬의 곱셈

    [문제 설명] https://programmers.co.kr/learn/courses/30/lessons/12949 코딩테스트 연습 - 행렬의 곱셈 [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] programmers.co.kr [풀이 과정] 행렬A와 행렬B 를 곱하기 위해서는 두 행렬이 다음 성질을 만족해야 한다. 1. 행렬A의 행의 길이(k)와 행렬B의 열의 길이(k)가 같아야 한다. 2. 두 행렬의 곱한 결과 행렬은 가로 세로가 (행렬B의 행 * 행렬A의 열) 이다. (m * n) 3. A * B 가 만족하듯이 B * A가 만족하려면 그림처럼 두 행렬..

    [Level2] 피보나치 수

    [Level2] 피보나치 수

    기본기가 탄탄해야 한다는 것을 다시 한 번 느낀다. [문제 설명] https://programmers.co.kr/learn/courses/30/lessons/12945 코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr [풀이 과정] 문제 풀이에 앞서 피보나치에 대해 간단히 기록하겠다. n의 피보나치 수는 n-1, n-2 피보나치 수를 포함..

    Stream

    Stream

    1. 숫자로 이루어져있는 문자열 잘라 숫자 배열로 만들기. String s = "1 2 3 4"; int[] nums = Stream.of(s.split(" ")).mapToInt(Integer::parseInt).toArray(); // nums = {1,2,3,4};

    [Level2] 다음 큰 숫자

    [Level2] 다음 큰 숫자

    [문제 설명] https://programmers.co.kr/learn/courses/30/lessons/12911 코딩테스트 연습 - 다음 큰 숫자 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니 programmers.co.kr [풀이 과정] JAVA의 Integer 클래스에는 이진수 관련 메소드들을 제공한다. 1. Integer.toBinaryString( int ); - 10진수 -> 2진수로 변환하고 싶을 때 사용한다. public class Test12 { public static void main(String[] args) { in..