java

    [JAVA] 유클리드 호제법_최소공배수, 최대공약수 구하기

    유클리드 호제법 이란? 유클리드 알고리즘 (Euclidean algorithm) 은 2개의 자연수의 최대공약수(GCD) 를 구하는 알고리즘 이다. 비교대상인 두 개의 자연수 a와 b에서 (이때, a>b) a를 b로 나눈 나머지를 r 이라고 했을때 GCD(a, b) = GCD(b, r) 이며, "r이 0이면 그때 b가 최대공약수이다." 라는 원리를 활용한 알고리즘 이다. 만약 r이 0이 아니라면 a에 b값을 다시 넣고, r을 b에 대입 한 후 다시 반복한다. 1) 반복문을 이용해서 최대공약수 구하기 int gcd(int a, int b) { //최대공약수 while(b!=0) { int r=a%b; a=b; b=r; } return a; } 2) 재귀함수를 이용해서 최대공약수 구하기 //재귀함수 사용 - ..

    Class 의 개념

    클래스의 개념을 알아보기에 앞서서 객체지향언어 을 잠깐 짚고 들어가보자. 객체지향이론의 기본 개념은 '실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다.' 라는 것 이다. 이 기본 개념을 이용하여, 자바에서 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적으로 프로그램을 구성하는 것이 가능해졌다. 자바 하면 객체 지향 언어, 객체 지향 프로그래밍 (OOP, Object-Oriented Programming) 가 떠오를 것 이다. 객체 지향 언어의 주요 특징은 다음과 같다. 1. 코드의 재사용성이 높다. : 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다. 2. 코드의 관리가 용이하다. : 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경..

    String s = "test"와 String s = new String("test")의 차이점

    String은 자바 개발자라면 자주 쓰게 되는 자료형 중 하나 이다. 해당 자료형은 불변성(Immutable) 이라는 성질을 가지고 있으며, 같은 값의 문자열에 대해서는 단 하나의 문자열 객체만을 생성하도록 설계되어 있다. 이러한 성질을 가지게 된 이유 중 하나의 가장 큰 장점은 성능 때문이다. 같은 값을 갖는 문자열 객체는 JVM의 객체가 생성되는 공간인 Heap에 매번 새로 생성하게 되면 메모리 공간적 측면에서 비효율적 이기 때문. 자, 다시 돌아와서 String은 두가지 생성 방식이 있고, 그에 따라 각각 차이점이 존재한다. new 연산자를 이용한 방식 리터럴을 이용한 방식 이번 포스팅은 new 연산자를 이용한 방식과, 리터럴을 이용한 방식의 차이점이 무엇인지 알아볼 것 이다. public clas..

    Map.getOrDefault(Object Key, Integer defaultValue)

    Map.getOrDefault(Object Key, Integer defaultValue) 💡 찾는 키가 존재한다면 찾는 키의 값을 반환하고 없다면 기본 값을 반환한다. 즉, 키 값이 몇번이나 사용되었는지 찾고싶을때 사용한다. 찾는 key를 가지지 않는 map 이 있을 수 있지만 Value를 가지길 원하고 map이 변경되는것을 원치 않을때 사용한다. import java.util.HashMap; import java.util.Map; public class GetOrDefaultEx { public static void main(String[] args) { String[] ex = {"A", "B", "C", "A"}; Map map = new HashMap(); for(String str : ex) ..

    Stack과 Queue

    목차 1) Stack과 Queue의 기본 개념 및 특징 2) Stack과 Queue의 메서드 3) Stack과 Queue의 활용 예시 1) Stack과 Queue의 기본 개념 및 특징 스택은 마지막에 저장한 데이터를 가장 먼저 꺼내게 되는 LIFO (Last In First Out) 구조로 되어있고, 큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO (First In First Out) 구조로 되어있다. 예를 들어 스택에 0, 1, 2 의 순서로 데이터를 넣었다면 꺼낼 때는 2, 1, 0의 순서로 꺼내게 된다. 큐에는 0, 1, 2 순서로 데이터를 넣었다면 0, 1, 2 의 순서로 데이터를 꺼내게 된다. 2) Stack과 Queue의 메서드 3) Stack과 Queue의 활용 예시 import..

    [프로그래머스] 위장

    ❗❗ 해당 문제는JAVA로 풀었습니다. 문제보러가기 문제 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothes의 모든 원소는 문자열로 이루어져 있습니다..

    [프로그래머스] 전화번호 목록

    ❗❗ 해당 문제는JAVA로 풀었습니다. 문제보러가기 문제 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가..

    [프로그래머스] 완주하지 못한 선수

    ❗❗ 해당 문제는JAVA로 풀었습니다. 문제보러가기 문제 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 예시 예제 #1 "leo"는 참여자 명단..