Java 10

자바 알고리즘 - 같은 숫자는 싫어 (배열의 중복 제거하여 반환하기)

배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. ex) arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return import java.util.*; public class Solution { public int[] solution(int []arr) { int[] answer = {}; return answer; } } 처음에 문제 이해를 잘못 해서 배열 전체의 중복을 없애라..

개발/Java 2021.04.07

자바 알고리즘 - 문자열의 가운데 글자 가져오기

String을 파라미터로 받아, 가운데 글자를 반환하자. 짝수는 두 개를 반환하면 된다. ex) "abcde" ▶ "c" "abcd" ▶ "bc" class Solution { public String solution(String s) { String answer = ""; return answer; } } 더 짧고 멋진 코드가 인터넷에 진짜 많다. substring써서 완전 짧게 한 줄로 조져끝내버린 빛같은 코드 보고 감탄..... 그치만, 내 풀이법을 담는 데 의의를 두기로 :) 더 열심히 해서 나도 멋있게 짜야지. 읏쨔. 접근 포인트 문자열의 길이를 구해 홀짝을 판별하고, 홀짝 여부에 따라 answer를 다르게 세팅하면 될 듯! 최종 코드 class Solution { public String so..

개발/Java 2021.04.02

자바 알고리즘 - 서울에서 김서방 찾기 (배열에서의 위치 찾기)

String 배열 seoul에서, "Kim"의 위치(인덱스) x를 찾아서 "김서방은 x에 있다" 라는 문장을 반환하자. * "Kim"은 반드시 seoul 안에 포함되어 있다. ex) ["Jane", "Kim"] ▶ "김서방은 1에 있다" ["Mary", "James", "Kim"] ▶ "김서방은 2에 있다" class Solution { public String solution(String[] seoul) { String answer = ""; return answer; } } 모든 알고리즘 연습문제가 그렇듯 이 역시 간결하고 엣지있는 정답 코드가 블로그에 많고 많지만! 내가 직접 짠, 내게 익숙한 버전으로 정리하기. 접근 포인트 반복문을 통해 seoul 배열에서 "Kim"을 찾아내되, 찾아내고 나면 끝..

개발/Java 2021.03.31

자바 알고리즘 - 자연수를 뒤집어 배열로 만들기

오늘은 자바 알고리즘 풀이! 자바에서, 자연수 n을 뒤집어, 각 자리 숫자를 원소로 가지는 배열을 만들어 리턴하자. 예를 들어, n = 12345 일 때 ▶ [5, 4, 3, 2, 1] 리턴 n = 135 일 때 ▶ [5, 3, 1] 리턴 * 단, n은 10,000,000,000이하 class Solution{ public int[] solution(long n) { return answer; } } 수많은 블로그에 이미 풀이법이 많이 나와 있지만 내게 가장 익숙한 방식을 정리해두려고 한다! 접근 포인트 1) 자연수 n의 자릿수에 구애받지 않고 성립해야 한다 2) 숫자열을 배열로 쪼개야 한다 3) 숫자열의 순서를 뒤집어야 한다 숫자열을 배열로 쪼개기 데이터타입이 int일 때에는 쪼개기 힘드니까, 문자열로..

개발/Java 2021.03.31

자바 반복문(for문)을 활용한 별 찍기 예제 2가지

자바 반복문 공부할 때 꼭 한번쯤 해 본다는 그 예제! 별 찍기. 자바 공부 초반에, 수업 중 for문을 엄청 빠르게 배웠었는데 그게 너무 이해가 안 가서 힘들었던 기억이 난다. (제가 문과라서요... 라고 하기엔 다른 문과 친구들은 곧잘 이해했었음) 근데 지금은 눈 감고도 반복문 돌릴 수 있는 거 보면, 그냥 이 개념이 나에게 생소했던 듯 하다. 당시 새벽까지 찍고 또 찍어냈던 수많은 별들을 추억하며- 나처럼, '무슨 말인지 알겠는데 모르겠다' 싶은 이들을 위해 좀더 쉽게 차근차근 별 찍기 과정을 기록해 본다. 순한 맛 하나, 매콤한 맛 하나 두 가지로 풀이! 이중 for문을 사용한 별 찍기 - 순한 맛 줄을 바꾸면서 별표만 하나씩 늘려 가는 예제이다. 얘가 어떻게 반복문인지를 뜯어 보면, 크게 봐서는..

개발/Java 2021.03.19

자바 반복문과 배열을 활용한 로또 조합 출력 예제 :)

살면서 로또라곤 딱 세 번 정도 해봤는데... (그 중 한 번은 오만원 당첨!) (설마 운을 다쓴건가) 자바를 공부하면서 예제로 풀게 되어 재밌었다. 수업 중엔 Random 클래스를 활용해서 풀었던 예제인데, 지난 포스팅에 적었던 Math.random()을 활용한 예제로 응용해서 오랜만에 다시 짜 보았다. 자바로 로또 번호 출력하기 조건 1 ) 가로로 6개의 숫자가 나열 조건 2 ) 위 조건 1) 의 숫자들은 중복되어서는 안 됨 요렇게 콘솔에 출력되면 된다. 먼저 구조를 보면, 결국은 숫자 6개짜리 배열이 총 5줄 반복된 셈이다. 숫자가 6개 찍히도록 반복문을 돌리고, 그 반복문을 감싸서 원하는 줄 (이 예제에서는 5줄) 수만큼 반복되게 또 돌리면 된다. 안쪽 반복문 (6개짜리 1줄) 코딩하기 이전 포스..

개발/Java 2021.03.18

자바에서 랜덤의 숫자(난수)를 활용하고 싶을 때? Math.random()을 쓰자!

자바 초보로 콘솔을 활용해서 부족하게나마 프로그래밍을 해나갈 때, 그나마 좀 있어 보이면서(!) 활용하기 쉬웠던 것이 자바에서 랜덤한 숫자, 한자로 '난수'를 제공해 주는 Math.random() 메소드였다 정확하게는 java.lang.Math 클래스의 정적 메소드이다. 0부터 1 사이의 난수를 제공해 주는데, 어떻게 쓰는지에 따라 그 쓰임새가 무궁무진하다. 자바의 Math.random() 메소드 반복문을 사용해 Math.random() 메소드를 출력했다. 0보다는 크지만 1보다는 작은 다양한 소수 값이 나왔다. 정말 랜덤하게 나온다! 그럼 이걸, 어떻게 활용하냐! 고수분들은 더 유용하게 활용하실 수도 있고, 아님 다른 방법으로 난수를 만드실 수도 있지만 뼝아리 관점에서 적어 봄! 위 반복문을 통해 얻은..

카테고리 없음 2021.03.18

자바 명명 규칙, 개발자들 간의 암묵적인 약속!

처음 자바를 배우면서, 호기심봇인 나는 계속해서 궁금했다. 왜 이건 대문자죠? 근데 또 왜 이건 소문자죠? 이유는 없다. '그냥', 혹은 '늘 그렇게 해 왔으니까' "그게 웬 꼰대같은 마인드람? 난 전통을 부숴버리겠어!" 라고 하기엔 그 약속에 의해서 '이렇겠거니' 하고 추정할 수 있는 데서 오는 이득이 더 클 것이라고 생각한다. 이것을 지키지 않아도 에러가 나진 않는다. 다만 현업에서 일하려면 지키는 게 좋다고! 처음부터 습관을 들여서 코딩하면 따로 익히지 않아도 되겠지. 자바 명명 규칙 종류 명명 규칙 예시 패키지 이름 소문자 java.util 클래스 이름 첫 자는 대문자, 나머지는 소문자 합성어의 경우 첫 자들은 대문자 StringBuffer InputStream 생성자 이름 클래스 이름과 같음 메..

개발/Java 2021.03.18

자바 가상 기계 (JVM, Java Virtual Machine)

JVM 개념 설명에 가장 많이 돌아다니는 이미지로 포스트를 시작 :-) 이전 포스팅에서, 프로그래밍 언어는 완전한 기계어(0101011110111)가 아니라 인간 언어와 기계어 사이에 있는 통역사 같은 언어라고 했었다. 그래서 운영체제는 프로그래밍 언어를 직접 해석하지 못한다. (쨌든 기계어가 아니니까!) 기계어가 아닌, 이 '프로그래밍 언어'를 해석하기 위해서는 가상의 운영체제가 필요하다. 자바에게는 그것이 바로 자바 가상 기계인 JVM이다. 자바를 어느 대기업 회장님이라고 치자. 회장님은 전 세계 어딜 가도 두렵지 않다. 전담 통역사가 있으니까. 중국어, 스페인어, 일본어, 다 회장님이 할 필요 없다. 통역해 주니까. 대신 통역사는 중국어 통역사, 스페인어 통역사가 달라야 할 거다. 그래서 자바는 운..

개발/Java 2021.03.18

프로그래밍 언어란? 자바(Java)란?

우리가 사용하는 언어는 컴퓨터 입장에서 "이해할 수 없는 문자 집합" 컴퓨터가 사용하는 언어는 우리의 입장에서 "0과 1의 이상한 반복" 사람과 기계가 커뮤니케이션 할 수 있도록 중간다리 역할을 하는 것이 우리가 배울, 모두가 배우고 싶어하는, 프로그래밍 언어이다. 프로그래밍 언어는 고급 언어와 저급 언어로 분류된다 (비하 아님) 복잡한 인간 언어에 가까워서 우리가 배우기 쉬운 것이 고급 프로그래밍 언어, 기계어에 더 가까운 것이 저급 프로그래밍 언어이다. 우리가 주로 배우는 것은 당연히 배우기 (저급 언어에 비해 그나마) 쉬운 고급 프로그래밍 언어로, C, C++, Java 등이 대표적이다. 이 언어는 컴퓨터가 바로 이해하기는 어렵기 때문에 기계어로 변환하는 '컴파일' 과정을 거쳐야 한다. 단, Jav..

개발/Java 2021.03.18