본문 바로가기
코딩테스트/programmers

프로그래머스 [#4] 코딩테스트 연습 JAVA - 4

by 8Antony 2022. 12. 7.

 

 

1. 부족한 금액 계산하기

 

 

 

ttps://school.programmers.co.kr/learn/courses/30/lessons/82612?language=java

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

class Solution {
    public long solution(int price, int money, int count) {
    
        long answer = 0;
        
        for(int i = 1; i <= count; ++i){
            answer += price * i;
        }
        
        if(money >= answer) return 0;
        return answer - money;
    }
}

 

 

 

2. 행렬의 덧셈

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12950?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

class Solution {
    public int[][] solution(int[][] arr1, int[][] arr2) {
        int[][] answer = new int[arr1.length][arr1[0].length];
        
        for (int i=0; i<arr1.length; i++) {
            for (int j=0; j<arr1[0].length; j++) {
                answer[i][j] += arr1[i][j] + arr2[i][j];
            }
        }    
        return answer;
    }
}

 

 

 

3. 직사각형 별찍기

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12969

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

import java.util.Scanner;

class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        for (int i=0; i<b; i++) {
            for (int j=0; j<a; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

 

 

 

4. 최대공약수와 최소공배수

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12940

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

 

 

 

class Solution {
    public int[] solution(int n, int m) {
        int[] answer = new int[2];
        int gcd = 1; //최대공약수 
        int min_value = n > m ? m : n; //최대공약수 
        
        for (int i=2; i<=min_value; i++) {
            if(n % i == 0 && m % i ==0) {
                gcd = i;
            }
        }
        
        int lcm = (n / gcd) * (m/gcd) * gcd; //최소공배수 
        
        answer[0] = gcd;
        answer[1] = lcm;
         
        return answer; //answer[0]answer[1] 이렇게 붙는다.
    }
}

   

 

 

 

5. 같은 숫자는 싫어

 

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/12906

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

 

import java.util.*;

public class Solution {
    public int[] solution(int []arr) {
        Stack<Integer> stack = new Stack<>();
        int cnt = 0;
        for(int i = 0; i < arr.length; ++i){
            if(stack.empty() || stack.peek() != arr[i]){
                stack.push(arr[i]);
                cnt += 1;
            }
        }
        int[] answer = new int[cnt];
        int[] temp = new int[cnt];
        for(int i = 0; i < cnt; ++i){
            temp[i] = stack.pop();
        }
        for(int i = 0; i < cnt; ++i){
            answer[i] = temp[cnt - i - 1];
        }
        

        return answer;
    }
}

 

 

 

 


 

 

Appendix

 

Scanner (파라미터 쓸 때와 차이)

별찍기 할때, parameter 쓰는 대신 사용 

 

어떤 입력값을 받는 기능이 필요할 때 사용 Scanner를 사용할 때에는 해당 클래스를 호출해야 한다. System.in

 

 

 

 

 

Stack 에 대해서

 

쌓는것. 먼저 들어간 자료가 나중에 나옴 

 

//값 추가

Stack<Integer> stack = new Stack<>(); //int형 스택 선언
stack.push(1);     // stack에 값 1 추가

 

 

// stack에 값 제거

stack.pop();       

// stack의 전체 값 제거 (초기화)

stack.clear();     

// stack의 가장 상단의 값 출력 

stack.peek();

 

 

 

 

https://coding-factory.tistory.com/601

 

[Java] 자바 Stack 클래스 사용법 & 예제 총정리

Stack이란? 자료 구조 중 하나인 Stack의 사전적 정의는 '쌓다', '더미'입니다. 상자에 물건을 쌓아 올리듯이 데이터를 쌓는 자료 구조라고 할 수 있습니다. Stack의 가장 큰 특징은 나중에 들어간 것

coding-factory.tistory.com

 

 

n > m ? m : n ;

 

n > m 보다 크면 n : m 

아니면 m : n 

 

 

gcd (최대공약수)

 

 

int min = (a < b) ? a : b;   // 참이면 a이고 아니면 b 인거지.
		int gcd = 0;
		for (int i = 1; i <= min; i++) {
			if (a % i == 0 && b % i == 0)
				gcd = i;
}

 

 

lcm (최소 공배수) 

 

 

int min = (a < b) ? a : b;   // 참이면 a이고 아니면 b 인거지.
		int gcd = 0;
		for (int i = 1; i <= min; i++) {
			if (a % i == 0 && b % i == 0)
				gcd = i;
		}
        
		System.out.println("최소공배수 : " + a * b / gcd); 
        
        //(a * b) * 최소공배수

댓글