개념/코딩테스트
알고리즘 문제풀이 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 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;
}
}