java
[Java] 문자열 비교 ==, equals() 차이점
예전에 알고리즘을 푸는 도중, String 변수를 무심코 == 연산자를 사용해 비교해 동작하지 않았던 경험이 있다. 물론 equals() 함수를 사용하니 잘 동작했는데, 그동안 이 둘의 차이가 뭔지 정확히 이해하고 있지 않았던 것 같아서 정리하려고 한다. Java에서는 int와 boolean과 같은 일반적인 데이터 타입의 비교는 == 연산자를 사용해서 비교한다. 하지만 String같이 Class의 값을 비교할 때는 == 가 아닌 equals()라는 메소드를 사용하여 비교를 해야한다. 이 둘의 차이는 뭘까? String 변수 생성 시 주소할당 String 변수를 생성할 때는 두가지 방법이 있다. 리터럴을 이용한 방식 new 연산자를 이용한 방식 위 두 가지 방식에는 큰 차이점이 있는데, 리터럴을 사용하게 ..
[Java] int와 Integer의 차이
1. int vs Integer int (primitive type, 원시형 타입) int는 변수의 타입(data type, 자료형)이다. 자료형은 ‘data의 type에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것’ 이다. 자료형은 기본형(primitive type)가 참조형(referece type)으로 나뉨 Integer (wrapper class, 래퍼 클래스) 매개변수로 객체를 필요로 할 때 기본형 값이 아닌 객체로 저장해야할 때 객체 간 비교가 필요할 때 위와 같은 경우, 기본형을 객체 다루기 위해 사용하는 클래스들을 래퍼 클래스라고 함. Integer은 int의 래퍼 클래스 라고 할 수 있음. int vs Integer int : 자료형(primitive type) 산술 연산 가능 ..
[Java] 프로그래머스 Lv.2 : 위장
https://programmers.co.kr/learn/courses/30/lessons/42578?language=java 코딩테스트 연습 - 위장 programmers.co.kr 풀이 경우의 수 계산법만 알면 간단히 풀 수 있다. 예를 들어, 상의 A개, 하의 B개가 주어진다면 서로 다른 옷의 조합의 수는 다음과 같이 계산할 수 있다. 상의든 하의든 1개만 선택해서 입는 경우 = A+B 상의1개 하의 1개 선택해서 입는 경우 = A*B 아무것도 입지 않는 수 = 1 최종 공식 = A+B+(A*B)+1 = (A+1)*(B+1) 하지만 우리는 아무것도 입지 않는 수는 빼줘야하기 때문에 최종적으로 -1을 해주도록 한다. HashMap에 key값으로는 의상의 종류, value로는 그 개수를 넣어줄 것인데,..
[Java] 스택(Stack)과 큐(Queue) Java로 구현하기
이번 포스팅에서는 스택과 큐를 자바에서 구현하는 방법에 대해 설명하려고 한다. 스택(Stack)과 큐(Queue)의 대한 기본적인 개념은 이전 포스팅에 정리 했었다. 자바에서 Stack 사용하기 자바에서 스택은 Stack 클래스를 구현하여 제공하고 있다. Stack st = new Stack(); Stack의 메서드 메서드 설명 boolean empty() Stack이 비어있는지 확인 Object peek() Stack의 맨 위에 저장된 객체를 반환 pop()과 달리 Stack에서 객체를 꺼내지 않음 비었을 때는 EmptyStackException 반환 Object pop() Stack의 맨 위에 저장된 객체를 꺼냄 비었을 때는 EmptyStackException 반환 Object push(Object ..
[Java] 프로그래머스 : 완주하지 못한 선수 (feat. HashMap)
https://programmers.co.kr/learn/courses/30/lessons/42576?language=java 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 입력 participant : 마라톤에 참여한 선수들의 이름이 담긴 String 배열 completion : 완주한 선수들의 이름이 담긴 String 배열 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자..
[Java] 프로그래머스 : 크레인 인형뽑기 게임
https://programmers.co.kr/learn/courses/30/lessons/64061?language=java 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 풀이 변수 doll : 꺼낸 인형을 넣을 리스트나 스택 doll board[i][m-1] : 꺼낸인형 answer : 터트린 인형개수 알고리즘 moves 만큼 for문 돌림 board의 길이만큼 for문 돌림 꺼낸인형(board[i][m-1]) 이 0일 경우에는 continue 꺼낸인형이 0이 아닐 시 doll에 넣은 마지막 인형과 같다면 인형을 터트리고 answ..
[Java] 프로그래머스 : 문자열 내림차순으로 배치하기 (feat. String <-> char[])
https://programmers.co.kr/learn/courses/30/lessons/12917 코딩테스트 연습 - 문자열 내림차순으로 배치하기 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 programmers.co.kr 풀이 String -> char[] char[] ch = str.toCharArray(); char[] -> String 1. 단순히 (+) 연산 String은 불변객체라 String 객체와 String 객체를 더하는(+) 행위는 메모리 할당과 메모리 해제를 발생시켜 많아질수록 성능이 떨어진다. String str = ""; for(..
[JAVA] 백준 14501번 : 퇴사
14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 문제 - N+1일째 되는 날 퇴사 - 남은 N일 동안 최대한 많은 상담을 함 - 각각의 상담은 상담을 완료하는데 걸리는 기간 : Ti - 상담을 했을 때 받을 수 있는 금액 : Pi 이때 얻을 수 있는 최대 수익을 구하는 프로그램 - N = 7인 경우에 다음과 같은 상담 일정표 1일에 잡혀있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10이다. 5일에 잡혀있는 상담은 총 2일이 걸리며, 받을 수 있는 금액은 15이다. 상담을 하는데 필요한 기간은 1일보다 클 수 있기 때문에, 모든 상담을 할 수는 없다. 예를 들어서 1일에 상담을 하게 되면, 2일, 3일에 있는 상담은 할 수 없게..