전체 글 192

자바의 객체 지향적 특징 (1) - 상속(Inheritance)

INTRO 객체 지향 언어의 특징 중 하나는 상속(Inheritance)입니다. 이것만큼 워딩 그대로 그 뜻을 잘 표현하는 것은 없는 것 같습니다. 상속은 말 그대로 한 클래스가 다른 클래스의 속성(메서드 및 필드)을 획득하는 것입니다. 보통 다른 클래스의 속성을 받는 클래스를 하위 클래스(자식 클래스), 특성을 주는 클래스를 상위 클래스(부모 클래스)라고 합니다. 상속을 이용하면 상위 클래스의 속성을 재사용하여 반복된 코드 중복을 줄일 수 있습니다. 하지만 객체 간의 속성과 관계를 잘 고려하여 상속을 이용하고, 구조를 설계하는 것이 중요합니다. 무분별한 상속은 오히려 객체 간의 결합도를 높여 유지보수와 수정이 어려워질 수 있습니다. extends 키워드 extends는 클래스의 속성을 상속하는 데 사용..

안드로이드 앱의 기본 구성 요소 (INTRO)

안드로이드의 구성 요소는 시스템이나 사용자가 앱에 들어올 수 있는 진입점입니다. 각 구성요소는 나름의 생명주기를 가지고 있기 때문에 각자의 목적을 수행하고, 생성과 소멸을 정의합니다. 앱의 기본 구성요소는 안드로이드 앱 개발을 할 때, 필수적으로 알아 둬야 하고, 목적에 맞게 구성 요소를 생성해야 합니다. 각 구성요소(Activity, Service, BroadCast Receiver, Content Provider) 에 대하여 간단하게 알아보려고 합니다. Activity Activity는 사용자와 상호작용하기 위한 진입점입니다. 사용자 인터페이스와 화면(UI)을 포함하고 있기 때문에 setContentView(View)을 이용하여 UI를 배치하는 창을 생성할 수 있습니다. 우리가 보통 보는 앱의 화면이..

[JAVA] 프로그래머스 Lv.2 : 짝지어 제거하기

🔥 2017 팁스타운 예제: s result baabaa 1 cdcd 0 제한 사항: 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. Solution #1 import java.util.Stack; class Solution { public int solution(String s) { char[] array = s.toCharArray(); Stack stack = new Stack(); for (char c : array) { if (!stack.isEmpty() && c == stack.peek()) { stack.pop(); } else{ stack.push(c); } } return stack.isEmpty() ? 1 : 0; } } Result #1 M..

[JAVA] 프로그래머스 Lv.2 : 올바른 괄호

예제: s answer "()()" true "(())()" true ")()(" false "(()(" false Solution #1 import java.util.Stack; class Solution { public boolean solution(String s) { char[] array = s.toCharArray(); int count = 0; Stack stack = new Stack(); for (char c : array) { if (c == '(') stack.push(c); else { if (stack.isEmpty()) return false; stack.pop(); } } return stack.isEmpty(); } } Result #1 More Algorithm! 👇👇 gi..

[JAVA] 프로그래머스 Lv.2 : 땅따먹기

예제: land answer [[1,2,3,5],[5,6,7,8],[4,3,2,1]] 16 제한 조건: 행의 개수 N : 100,000 이하의 자연수 열의 개수는 4개이고, 땅(land)은 2차원 배열로 주어집니다. 점수 : 100 이하의 자연수 Solution #1 import java.util.Arrays; class Solution { int solution(int[][] land) { int answer = 0; for (int i = 0; i < land.length - 1; i++) { land[i + 1][0] += Math.max(Math.max(land[i][1], land[i][2]), land[i][3]); land[i + 1][1] += Math.max(Math.max(land[i]..

[JAVA] 프로그래머스 Lv.2 : 최댓값과 최솟값

예제: s return "1 2 3 4" " 1 4" "-1 -2 -3 -4" "-4 -1" "-1 -1" "-1 -1" Solution #1 class Solution { public String solution(String s) { String[] array = s.split(" "); int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; for (String n : array) { int value = Integer.parseInt(n); if(min > value) min = value; if(max < value) max = value; } return min + " " + max; } } Result #1 More Algorithm! 👇👇 gi..

[JAVA] 프로그래머스 Lv.2 : 최솟값 만들기

예제: A B answer [1, 4, 2] [5, 4, 4] 29 [1, 2 [3, 4] 10 제한 조건: 배열 A, B의 크기 : 1,000 이하의 자연수 배열 A, B의 원소의 크기 : 1,000 이하의 자연수 Solution #1 import java.util.Arrays; class Solution { public int solution(int[] A, int[] B) { int answer = 0; Arrays.sort(A); Arrays.sort(B); for (int i = 0; i < A.length; i++) { answer += A[i] * B[B.length - i - 1]; } return answer; } } Result #1 More Algorithm! 👇👇 github.com..

[JAVA] 프로그래머스 Lv.2 : 행렬의 곱셈

예제: arr1 arr2 return [[1, 4], [3, 2], [4, 1]] [[3, 3], [3, 3]] [[15, 15], [15, 15], [15, 15]] [[2, 3, 2], [4, 2, 4], [3, 1, 4]] [[5, 4, 3], [2, 4, 1], [3, 1, 1]] [[22, 22, 11], [36, 28, 18], [29, 20, 14]] Solution #1 class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] answer = new int[arr1.length][arr2[0].length]; for (int i = 0; i < arr1.length; i++) { // arr1 아래로 for..

728x90