본문 바로가기

분류 전체보기171

[프로그래머스/알고리즘] 제일 작은 수 제거하기 (자바/Java) 문제 설명 정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10]면 [-1]을 리턴 합니다. 제한 조건 arr은 길이 1 이상인 배열입니다. 인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다. Step1. 문제분석 우선 리턴하는 배열이 빈 배열일 경우 배열에 -1을 채워 리턴하라고 했다. 그러면 if문으로 배열의 1길이가 1일 경우는 그냥 -1을 넣어 바로 리턴해서 끝내고, 그게 아닐 경우는 최소값을 찾고 그 최소값을 제외한 수만 answer 배열에 담는다 Step2. 문.. 2022. 11. 24.
20221123 프로그래밍 기초[알고리즘 스터디] -5 오늘 Java의 정석 책이 왔다. 유튜브에 남궁성님의 자바 강의와 책을 보며 공부를 했는데 모르는 부분이 사실 너무 많았는데 잘 가르쳐 주셔서 이해되는 부분이 많았다. 특히 배열에서 2차원 배열 부분이 많이 어려웠는데 확실히 도움이 됐다. 그리고 오늘 낮에 언어 스터디를 조원분들과 진행했는데 사실 모르는 부분이 많았다. 이렇게 모르는 부분을 알아야 알아가고 배울 수 있다고 하셔서 이렇게 TIL을 할때마다 모르는 점을 하나하나 체크를 하며 다음날 채워나가는 식으로 해야겠다. 필드, 생성자, 메소드에 대해 정확한 이해가 부족했다. 메모리의 구조에 대해 아직도 이해가 부족하다. (힙 영역, 스택 영역, 메소드 영역) 프로퍼티에 관해 알아가야겠다. 제네릭에 대한 공부 우선 필요한 부분이 이렇게 있다. 내일 알고.. 2022. 11. 23.
[프로그래머스/알고리즘] 정수 제곱근 판별(자바/Java) 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. Step1. 문제분석 i를 0부터 i * i 가 n 이하가 될 때까지 반복을 해서 i * i가 n인지 판단하고 맞다면 (i + 1)의 제곱을 answer에 넣어준다. Step2. 문제풀이 코드 class Solution { public.. 2022. 11. 23.
[프로그래머스/알고리즘] 정수 내림차순으로 배치하기 (자바/Java) 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. Step1. 문제분석 길이만큼 반복문으로 돌고 이를 문자열을 하나씩 배열에 담아 준다. 그 후 오름차순으로 정렬하고, 그 값들을 다시 역순으로 배열에 담아준다. 배열에 담은 값을 Long타입으로 다시 변환해준다. Step2. 문제풀이 코드 import java.util.*; class Solution{ public long solution(long n){ String str = n + ""; String ans = ""; char[] ar.. 2022. 11. 23.
20221122 프로그래밍 기초[알고리즘 스터디] -4 4-5일간 알고리즘 문제를 풀었는데 기초가 제대로 다져지지 않은 상태에서 문제만 계속 풀다보니 이게 배움이 있는건지 아니면 문제풀기에 급급해서 배우는거 없이 진도만 빼기 바쁜건지 하는 생각이 들었다. 그래서 알고리즘 문제에 급하게 생각하지 않고 꾸준히 알고리즘 문제를 1-2문제 푸는 쪽으로 방향을 틀고 알고리즘 보다 자바에 대해 조금 더 깊게 파볼 생각이다. 오늘은 알고리즘 모의고사가 있었다. 문제를 공유해도 되는지 몰라서 공유는 하지 않겠지만, 오히려 첫문제가 어렵고 두번째 문제가 할만했다. 정말 간단하게 조금만 생각하면 해결되는 문제라서 쉽게 풀었던 것 같다. 다만 1,3 번 문제를 봐도 잘 이해가 되지 않아 모의고사가 아닌 실제 시험이였으면 꽤나 낭패였을거같다. 오늘은 자바 공부를 했다. 스터디 부.. 2022. 11. 22.
[Java] 클래스의 구성 클래스에는 객체가 가져야할 구성 멤버가 선언된다. 필드(Field) 생성자(Constructor) 메소드(Method) 이 구성 멤버들은 생략되거나 복수 개가 작성될 수 있다. 필드(Field) 객체의 고유 데이터, 부품 객체, 상태 정보를 저장하는 곳 선언된 형태는 변수와 비슷하지만, 필드를 변수라 부르지는 않음 변수는 생성자와 메소드 내에서만 사용, 생성자와 메소드가 실행 종료되면 자동 소멸 필드는 생성자와 메소드 전체에서 사용되며, 객체가 소멸되지 않는 한 객체와 함께 존재 생성자(Constructor) new 연산자로 호출되는 특별한 중괄호 {} 블록 객체 생성 시 초기화를 담당 (필드를 초기화하거나, 메소드를 호출해서 객체를 사용할 준비를 한다) 메소드와 비슷하게 생겼지만, 클래스 이름으로 되어.. 2022. 11. 22.
[Java] 클래스 선언 클래스 구조 클래스의 구성 맴버 설명 필드(Field) 객체의 데이터가 저장되는 곳 생성자(Constructor) new 연산자로 호출되는 메소드로 객체 생성 시 필드의 초기화를 담당 메소드(Method) 객체의 동작에 해당하며 클래스의 다양한 동작을 구성 클래스 내부에는 클래스의 속성을 나타내는 필드와 클래스의 동작을 나타내는 메소드 그리고 클래스를 생성할 때 호출할 수 있는 생성자가 있습니다. 생성자는 new 연산자를 통해 호출할 수 있는 메소드라고 생각하시면 되며 주로 필드의 변수들을 초기화하는 역할을 합니다. 클래스 선언 및 인스턴스 생성 클래스 선언 class 클래스명{ } class Student{ //필드(Field) String name; //이름 int age; //나이 int korea.. 2022. 11. 22.
Object-Oriented Programming(OOP) 객체 지향 프로그래밍 [Object-Oriented Programming(OOP) ] 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론 객체 : 세상에 존재하는 모든것, 프로그래밍에서의 객체는 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹 [EX] 컴퓨터(객체) = 데이터(본체, 모니터, 키보드) + 기능(화면, 소리, 입력, 출력) 코드 재사용성과 생산성의 향상 효과를 볼 수 있고, 유지보수의 편의성 덕택에 협업이 중요하고 규모가 큰 대형 프로젝트에 사용되는 프로그래밍 이론이다. OOP의 장점 코드 재사용성 증가 상속을 통해 프로그래밍시 코드의 재사용을 높일 수 있다. 생산성 향상 잘 설계된 클래스를 만들어서 독립적인 객체를 사용.. 2022. 11. 22.
20221121 프로그래밍 기초[알고리즘 스터디] -3 주말을 보내고 다시 알고리즘 스터디를 진행하였다. 아직 자바에 대한 지식이 많이 부족한 탓일까. 난이도가 올라갈수록 문제를 푸는데 막히는 부분이 점점 많아진다. 머리로 이렇게 이렇게 하면 될거 같은데... 하면서 손으로 적어보며 Intellij에도 작성해서 돌려보고 해봐도 잘 안되는 부분이 많다. 알고리즘도 중요하지만 자바의 기초부터 공부를 할 필요가 있다고 많이 느꼈다. 오늘 새로운 스터디 조가 정해졌다. 이 조는 알고리즘 문제, 앞으로 있을 과제들과는 예외로 함께 자바에 대해 공부할 스터디 조 이다. 사전 스터디 때 같은 조를 하셨던 분도 계셨고 처음 만난 조원분들도 있었다. 그래도 같이 6주간 함께 주특기 과정, 미니 프로젝트, 클론 코딩, 실전 프로젝트 때 까지 함께 공부하실 분들이니 함께 더 으.. 2022. 11. 21.