전체 글 82

[Array] 2차원 배열의 90도 회전

● 2차원 배열을 90도 회전시키려면 어떻게 해야 할지를 생각해보자 주어진 배열↓ char[][] star = { {'*','*',' ',' ',' '}, {'*','*',' ',' ',' '}, {'*','*','*','*','*'}, {'*','*','*','*','*'} }; star 2차원 배열을 90도 돌려놓은 2차원 배열 result 배열을 생성하여 star배열의 성분들을 옮길 것이다. 그리고 그 안의 성분들을 정말로 90도 회전하여 옮긴다는 생각으로 코드를 짜 보자 1) 배열의 회전 4행 5열의 2차원 star배열의 성분들을 옮겨 담을 곳 result 배열을 생성, 이제 star의 행을 90도 회전시켜서 넣을지 열을 회전시켜 넣을지 고민해봐야 한다. 공부하는 입장이기에 2가지의 경우를 모두 ..

Java/Daily-Java 2021.04.20

Call by value

● 자바의 정석 예제를 통하여 call by value를 알아보자 ● Call By Value란? 자바, C언어 등은 함수에 매개변수값을 전달할 때 Call By Value라는 방식을 사용한다. (C++은 참조연산자 '&' 가 있어서 call by reference를 지원한다.) 좀 더 쉽게 말하면 '값'을 복사해서 전달하는 방식을 사용하는데 이것이 바로 Call By Value 라고 한다. 먼저 아래 예제를 한번 같이 살펴보고 그 결과를 예측해보자 class Data {int x;} public class PrimitiveParamEx { public static void main(String[] args) { Data d =new Data(); d.x=10; System.out.println("mai..

Java/Java Study 2021.04.19

[Array] 동전 거슬러주기 _ Part 2 (응용)

● 동전을 거슬러주자 다만 part1과 달리 이번엔 동전의 개수가 정해져 있다. 문제 (출처: 자바의 정석 연습문제) public class Practice07 { public static void main(String[] args) { if (args.length != 1) { System.out.println("USAGE: java Exercise5_7 3120"); System.exit(0); } int money = Integer.parseInt(args[0]); //커맨드라인으로 받은 변수는 문자열이므로 정수로 변환한다. System.out.println("money=" + money); int[] coinUnit = { 500, 100, 50, 10 }; int[] coin = { 5, 5, ..

Java/Daily-Java 2021.04.15

[Array] 동전 거슬러주기 _ Part 1

● Java를 이용한 동전 거슬러주는 코드를 작성해보자 문제 조건 : A. 내가 가진 동전의 종류 : 500원 100원 50원 10원 B. 동전의 개수는 무제한 C. 500원부터 10원 순서로 큰 금액의 동전을 우선적으로 거슬러 줘야 한다 D. 받은돈(money) : 2680 Result↓ money=2680 500 : 5 100 : 1 50 : 1 10 : 3 1) 배열 설정 int [] coinUnit = {500,100,50,10}; int [] coinNum = new int [4]; // coinUnit 당 거슬러 줄 동전의 개수를 넣어줄 배열 출력 시 필요 2) 거슬러 줄 동전의 갯수 구하기 int money = 2680; // 거슬러 줘야 할 돈의 액수는 중요치 않으므로 조건에 안 넣음 26..

Java/Daily-Java 2021.04.15

[Array] 배열을 응용한 " * " 출력 예제

● 배열을 응용한 " * " 출력 예제 int[] Arr = { 1,4,4,3,1,4,4,2,1,3,2 }; Q : 주어진 배열에 중복하는 숫자의 개수만큼 각각 * 를 출력하는 코드를 작성하라 Result ↓ 3*** 2** 2** 4**** 1) 배열을 선언하자 int[] Arr = { 1,4,4,3,1,4,4,2,1,3,2 }; 그리고 * 를 찍어줄 "횟수"를 담아줄 배열을 만든다. int[] Arr2 = new int[4]; // 4개의 숫자의 중복횟수를 넣을꺼니 인덱스는4개 2) 무엇을 구해야 하는가 이것을 어떻게 프로그래밍으로 구현할것인가 우선 우리는 Arr에서의 중복되는 숫자의 횟수를 구해야한다. 그리고 그값을 Arr2에 넣을것이다. Arr2[0] = 중복횟수 (+1+1+1) Arr2[1] =..

Java/Daily-Java 2021.04.13

[Array] 2차원 배열 응용

● 2차원 배열을 이용하여 다음의 결과를 출력해보자 실행결과 각행의 맨 우측은 각행의 합, 맨 아래는 각 열의 합, 6행 4열 은 전체 성분의 합 Result↓ 100 100 100 300 20 20 20 60 30 30 30 90 40 40 40 120 50 50 50 150 240 240 240 720 다시 한번 생각해봐도 잘 모르겠으면 일단 손으로 써보면서 생각해보자, 손으로 프로그래밍의 동작 순서를 가시화하면서 공부하는 게 생각보다 많이 괜찮다. 1) 2차 배열을 구상하자 빨간색은 주어진 배열이고 파란색은 합과 동시에 빨간색 배열을 옮겨 넣을 배열이다. 배열의 확장 이러한 아이디어가 떠오르지않는다면 그냥 이런 문제를 머리에 유형화를 시켜두는 게 정신건강에 좋다 2) 실행순서 우선 생각의 편의를 위..

Java/Daily-Java 2021.04.13

누추한 곳에 귀하신 분이

현재 많으면 한두 명 평상시엔 한 명도 드나들지 않는 저의 블로그에 혹시나 들려주신 분(들) 환영합니다. 이 블로그의 목적은 제가 공부하면서 모르는 개념들, 중요하다 생각하는 것들을 정리하기 위한 공간이고 그리고 본 블로그의 초창기 목표는 아니었으나 제가 처음 IT업계에 발을 들일때 공부하며 겪은 어려움이 훗날엔 과거의 저처럼 생소한 영역에 발을 들이는 분들의 어려움이 될 거란 생각이 들어 제가 공부한 내용과 아는 지식들을 최대한 쉽게, 하지만 그 본질을 훼손하지 않으며 설명해주는 그런 블로그를 만드는 게 지금은 저의 야망입니다. 저 또한 많은 개발자분들, 저처럼 개발자가 되기 위하여 공부한 기록을 올리시는 분들의 블로그를 몇십 개씩 창을 띄우며 이해 안 가던 개념들에 발 묶여 하루를 다 보내곤 했었습니..

[객체지향] 클래스, 객체, 인스턴스

● 클래스, 객체, 인스턴스? 대체 이것들은 무엇인가 프로그래밍을 접하면서 너무나도 어려웠던 개념들이다. 개발에 손을 대고 나서 2개월 차에야 감을 잡은 개념들이었던 거 같다 이해하기 힘든 만큼 한번 이해해놓으면 프로그래밍을 하는 데 있어서 시야가 넓어지는 느낌이고 코딩을 하면서 코드 간의 관계를 이해하는데 도움이 많이 된다. 클래스(class)란 무엇인가 하면 '객체'를 정의해놓은 것이라고 말할 수 있다. 흔히 쓰는 비유중 클래스는 설계도이고 객체는 그 설계도로 만든 제품이라고 표현한다. 클래스는 설계도이고 설계도로 만든 제품이 바로 객체이다. 그리고 클래스에서 객체를 생성하는 과정을 우리는 '인스턴스화(instantiate)'라고 부르며, 인스턴스(instance)와 객체는 같은 말이라고 봐도 무방하..

Java/Java Study 2021.04.12

[객체지향] 객체지향 프로그래밍 (6/2일 추가내용 + 다형성)

● 객체지향 프로그래밍 객체지향 프로그래밍이란 프로그램의 규모가 점점 커지고, 그 프로그램을 사용하는 사용자들의 요구가 빠르게 변화해가는 상황을 기존의 절차적 언어(절차적 프로그래밍)로는 극복하기 어렵다는 상황에까지 이르면서 1995년 자바의 발표 이후 객체지향 언어는 프로그래밍 언어의 주류로 자리 잡게 되었다. '객체지향 언어' 란 기존의 프로그래밍 언어에 약간의 룰을 접한 것으로써, 아주 간단하게 이 규칙에 대해 말하자면 코드를 유연하게 만들기 위한 룰이라고 볼 수 있다. 이러한 룰을 적용시킨 이유는 앞서 말한 빠른 시대적 변화에 대응하기 위하여 많은 개발자들이 프로그램에 대한 개발과 유지보수를 용이하게 만들기 위함이다. 이러한 규칙을 접목시킨 객체지향 언어의 특징이란 다음과 같다. 1. 코드의 재사..

Java/Java Study 2021.04.12

[Array] 행렬의 곱셈

● Array를 이용한 행렬의 계산 코드 1) 행렬의 곱셈 조건 행렬의 곱셈에 대해 간단히 알아야 할 규칙 A =(axb) , B=(bxc) AB = (axc) 2) 코드구상 행렬을 담을 배열을 선언&생성하자 int[][] m1 = { // 2x3 행렬 {1,2,3}, {4,5,6} }; int[][] m2 = {// 3x2 행렬 {1,2}, {3,4}, {5,6} }; final int ROW = m1.length; // 행렬의 연산결과로 생긴 행의 길이 final int COL = m2[0].length; // 열의 길이 int[][] m3 = new int[ROW][COL]; //연산의 결과가 들어갈 배열 결과값 행렬 AB = (axc) 의 값을 출력하기 위해 (행의 길이-1)번의 연산을 (열의 길..

Java/Daily-Java 2021.04.11