분류 전체보기 118

클래스변수, 인스턴스변수, 지역변수 - JAVA

변수는 선언위치에 따라 종류가 다릅니다. 클래스변수, 인스턴스변수, 지역변수 모두 세 종류가 있습니다. '선언된 따라 종류가 결정되므로 어느 영역에 선언되었는지 파악하는 게 중요합니다. 멤버변수를 제외한 나머지 변수들은 모두 지역변수이며, 멤버변수 중 static 이 붙은 것은 클래스변수, 붙지 않은 것은 인스턴스 변수입니다. 예시) public class varExam { int instanceVariable; //인스턴스변수 static int classVariable; //클래스변수 (static변수, 공유변수) void method(){ int localVariable; //지역변수 } } 인스턴스 변수(instance vairable) - 클래스 영역에 선언 - 클래스 인스턴스를 '생성할 때' ..

배열의 복사 - JAVA

배열을 복사를 하려고 하는데 변수처럼 '=' 연산자로 넣으면 쉽게 되겠네? 라고 생각을 했다가 문제가 생겨서 한참을 찾아 헤맨 기억이 있습니다.. 자바의 정석에서 마침 이 파트가 있어 개인적으로 정리를 포스팅 하게 되었습니다. 우선 배열의 복사는 for문을 이용하여 배열을 복사하는 방법 ( 값을 for문을 돌며 다 넣어주기) , '=' 연산자를 사용하는 방법 ( ex. arr = arr2 ), System.arraycopy( ) 를 이용하여 배열을 복사하는 방법이 있습니다. for문 이용하여 값을 넣거나 System.arraycopy( ) 는 Deep copy(깊은 복사) 로서 '실제값'을 넣어주게 되지만 arr = arr2 와 같은 방식은 Shallow copy(얕은 복사)로 '주소값'을 복사하게 됩니..

for each 문 - JAVA

알고리즘을 풀거나 스프링 할때도 많이 사용되어 따로 정리를 하게 되었습니다. for each 문이라고 흔히 부르는데 '자바의 정석'에서 향상된 for문(enhanced for statement) 이라 명칭하고, JDK1.5 부터 배열과 컬렉션에 저장된 요 소에 접근할 때 기존의 사용하던 방법보다 편하게 처리할 수 있습니다. 사용방법 for( 타입 변수명 : 배열 or 컬렉션) { // 반복할 문장 } 사용 방법은 위와 같은 구조인데 글로만 적으면 어떻게 사용할지 감이 안올 수 있어 기존 for문과 비교하여 보여드리겠습니다. 1. 일반 for문 사용 - 배열 과 ArrayList import java.util.ArrayList; public class forExam { public static void m..

문자열의 비교 - JAVA

코딩테스트에도 문자열의 비교는 자주 활용되기 때문에 따로 정리를 하게 되었습니다. 이 내용을 몰랐을때 자연스럽게 '==' 연산자를 비교하려는데 값이 같은데 다르다고 출력이 되서 당황한 적이 있습니다. 우선 String 변수를 생성할때는 리터럴을 이용한 방식과 new 를 이용한 방식이 있습니다. 1. 리터럴을 이용한 방식은 string constant pool 이라는 영역에 선언한 문자열이 이 주소값을 가집니다. String str1 = "ddinguBlog"; String str2 = "ddinguBlog"; 위 같은 선언은 같은 주소를 가르키기 때문에 '==' 연산자를 사용해도 같다고 출력이 됩니다. 2. new 를 이용하게 되면 '==' 연산자로는 비교를 할 수 없습니다. String str = "d..

[프로그래머스 Level2] 괄호 변환 (JAVA) - 2020 Kakao

[문제] 출처 - https://programmers.co.kr/learn/courses/30/lessons/60058?language=java 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr [문제 풀기 전] 이 문제에 처음 접근할 때 2번 u, v 를 나누는 처리와 재귀의 처리가 좀 까다로웠다. 재귀는 그냥 진짜 문제에서 하라는대로 반환(return) 하면 되는 것이였고.. u,v 를 나눌 때 따로 ' ( ' 와 ' ) ' 개수가 같아질 때는 생각했는데 문자열을 나누고 만드는 부분이 미숙하였다. 카카오 문제..

프로그래머스 2022.02.06

상수와 리터럴 - JAVA

상수(constant) 는 변수와 마찬가지로 값을 저장할 수 있는 공간 이지만, 변수와 달리 값을 저장하게 되면 다른 값으로 변경이 불가합니다. 변수 선언과 동일하며 변수타입 앞에 final 키워드를 붙여주면 됩니다. 상수는 반드시 선언과 동시에 초기화를 해야합니다. 왜냐하면 앞서 말씀드린 다른 값으로 변경이 불가 하기 때문입니다. public class constant { final int YEAR = 2022; // year 라는 이름의 상수 선언 final int AGE = 29; // age 라는 이름의 상수 선언 AGE = 30; //에러 } 상수는 모두 대문자로 하는 것이 암묵적인 관례이며, 여러 단어로 이루어져 있다면 '_' 로 구분합니다. 리터럴은 원래 20, 2.15, 'C', "ABC"..

변수란? - JAVA

변수란? 단 하나의 값을 저장할 수 있는 메모리 공간입니다. 선언방법? 변수 타입 , 변수 이름 public class variable { int year; // year 라는 이름의 변수 선언 int age; // age 라는 이름의 변수를 선언 } 변수의 선언 : 변수를 선언하게 되면 메모리 빈 공간에 변수타입에 맞는 공간을 확보, 변수 이름을 통하여 사용가능합니다. 초기화 : 변수를 선언할때는 초기화를 해야합니다. 메모리는 여러 프로그램이 공유하는 자원이기 때문에 쓰레기값이 있을 수 있기 때문입니다. 초기화 방법? public class variable { int year = 2022; // year 값 2022로 초기화 int age = 29; // age 값 29로 초기화 } ! 변수의 이름을 ..

자바언어의 특징

자바는 다른 언어에는 없는 많은 장점들을 가지고 있습니다. 대표적인 몇가지에 대해서 정리를 하겠습니다. 1. 운영체제에 독립적 - 자바 응용프로그램은 운영체제, 하드웨어가 아닌 자바가상머신(JVM) 하고만 통신하고 운영되기 때문에 자바로 작성된 프로그램은 운영체제, 하드웨어와 관계없이 실행이 가능하다. 2. 객체지향언어 - 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향언어이다. 3. 자동 메모리 관리(Grabage Collection) - 자바는 가비지컬렉터가 자동적으로 메모리를 관리해줘서 프로그래밍에 집중할 수 있게 도와준다. 4. 네트워크와 분산처리를 지원 - Java API 를 통해 네트워크 관련 프로그램을 쉽게 개발 할 수 있도록 지원한다. 5. 멀티쓰레드를 지원한다. - 자바는 시스템과 관..

[프로그래머스 Level2] 문자열 압축 (JAVA) - 2020 Kakao

[문제] 출처 - https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr [문제 풀이] 문자열을 압축해서 가장 문자열의 길이가 작은 것을 return 하도록 문제를 풀어야합니다. s의 길이는 1이상 1,000 이하이고 가장 길이가 작은 것을 구하므로 문자열의 압축방식을 1부터 진행하여 결과값을 비교하면 됩니다. 여기서 문자열을 압축할때 전체 문자열의 반이상이 넘어가면 압축을 하지 못하므로 문자열의 반까지만 압..

프로그래머스 2022.02.01

[백준 17070] - 파이프 옮기기(JAVA)

[문제] 출처 - https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net [문제풀이] DFS 를 활용하면 해결 할 수 있습니다. (N, N) 으로 이동시키는 모든 방법의 개수를 구해야 합니다. 파이프는 놓여진 방향에 따라 이동할 수 있는 방법이 다릅니다. 가로 - > 가로 or 대각선 세로 - > 세로 or 대각선 대각선 - > 가로 or 세로 or 대각선 * 모든 곳에서 대각선을 갈 수 있어서 코드에서는 대각선으로 가는 경우..

백준 문제풀이 2022.01.29