개념/코딩테스트

알고리즘 문제풀이 2-1

Eprld 2025. 3. 10. 17:49

문제 1 / BuildPyramid

-목표 : 피라미드의 블록 수를 계산하는 프로그램 작성

 

최종 코드

-answer을 0으로 선언하여 블록의 총 합을 저장한다.

        int answer = 0;
 
-for문을 사용하여 1층부터 n층까지 블록을 순서대로 더한다.

        for(int i=0; i<=n; i++){
            answer += i;
        }
 
-return으로 결과를 반환한다.
        return answer;
 

 

문제 2 / TakeTheSand

-목표 : boolean 형식을 사용해 모래를 뺄 수 있는지 여부를 판별하는 프로그램 작성

 

최종 코드

 

boolean을 사용해 true false 반환

boolean answer;
 
if - else를 사용해 홀수면 false 짝수면 true를 반환한다.
 
      if(num % 4 == 1){
            answer = false;
        }else{
            answer = true;
        }

문제 3 / Stock

-목표 : 주어진 배열 A에서 한 번의 매수와 매도를 통해 최대 수익을 계산하는 문제

 

최종 코드

class Solution {
    public int solution(int[] A) {
        int answer = 0;
        int minNum = A[0];

        for(int i =0; i< A.length; i++){
        answer = Math.max(answer, A[i] - minNum);

            minNum = Math.min(minNum, A[i]);
        }
     
        return answer;
    }
}

 


 

문제 4 / MostAppearNumber

-목표 : 숫자로 이루어진 문자열 s가 있을 때, 이 문자열에서 가장 많이 등장하는 0~9 사이의 수자를 출력하는 프로그램을  구현

 

최종 코드

class Solution {
    public int solution(String s) {
        int[] count = new int[10];
        int answer = 0;
        int minNum = 9;
     

        for(int i=0; i<s.length(); i++){
            int num = s.charAt(i) - '0';    
            count[num]++;
        }
       
        for(int i =0; i <10; i++){
            if(count[i]>answer){
                answer = count[i];
                minNum =i;
            } else if(count[i] == answer){
                minNum = Math.min(minNum, i);
            }
        }
        answer = minNum;
        return answer;
    }
}

 

문제 5 / Billboard

-목표 : 전광판에서 문자열 s가 오른쪽에서 왼쪽으로 흐르는 상태를 출력

 

최종 코드

class Solution {
    public String solution(int n, String s, int t) {
        String answer = "";
        int m = s.length();
        int cycle = m+n;
        int pos = (t % cycle) - (n-1);

        for(int i=0; i<n; i++){
            int idx = pos + i -1;
            if (idx >= 0 && idx < m) {  
                answer += s.charAt(idx);
            } else {                
                answer += '.';
            }
        }

        return answer;
    }
}