목록전체 글 (128)
운동하는 개발자의 메모장

1. 문제 설명 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 2. 제한사항 arr은 자연수를 담은 배열입니다. 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다. divisor는 자연수입니다. array는 길이 1 이상인 배열입니다. 3. 입출력 예 arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3,2,6] 10 [-1] 4. 입출력 예 설명 입출력 예#1 arr의 원소 중 5로 나누어 떨어지는 원소는 ..

1. 문제 설명 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. 2. 제한 조건 phone_number는 길이 4 이상, 20이하인 문자열입니다. 3. 입출력 예 phone_number return "01033334444" "*******4444" "027778888" "*****8888" class Solution { public String solution(String phone_number) { String answer = ""; String a[] = phone_number..

1. 문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 2. 제한 사항 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. 3. 입출력 예 seoul return ["Jane", "Kim"] "김서방은 1에 있다" class Solution { public String solution(String[] seoul) { String answer = ""; for(int i =0..

1. 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 더보기 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 2..

1. 문제 설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 2. 제한사항 3 ≤ n ≤ 1,000,000 3. 입출력 예nresult n result 10 3 12 11 4. 입출력 예 설명 입출력 예 #1 10을 3으로 나눈 나머지가 1이고, 3보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 3을 return 해야 합니다. 입출력 예 #2 12를 11로 나눈 나머지가 1이고, 11보다 작은 자연수 중에서 문제의 조건을 만족하는 수가 없으므로, 11을 return 해야 합니다. class Solution { public int sol..

1. 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 2. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 3. 입출력 예nreturn n return 118372 873211 import java.util.Arrays; import java.util.Collections; class Solution { public long solution(long n) { long answer = 0; String str = Long.toString(n);//long n을 String str에 저장하기 위한 형변환 String[] arr = str..

하샤드 수 1. 문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 2. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 3. 입출력 예 arr return 10 true 12 true 11 false 13 false 4. 입출력 예 설명 입출력 예 #1 10의 모든 자릿수의 합은 1입니다. 10은 1로 나누어 떨어지므로 10은 하샤드 수입니다. 입출력 예 #2 12의 모든 자릿수의 합은 3입니다. 12는 3으로 나누어 떨어지므로 12는 하샤드 수입니다. 입출력 ..

[정수제곱근 판별] 1. 문제 설명 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. 2. 제한 사항 n은 1이상, 50000000000000 이하인 양의 정수입니다. 3. 입출력 예 n return 121 144 3 -1 4.. 입출력 예 설명 입출력 예#1 121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다. 입출력 예#2 3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다. class Solution { public long solution(long n) { double a = Math.sqrt(n..

자연수 뒤집어 배열로 만들기 1. 문제 설명 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 2. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 3. 입출력 예 n return 12345 [5,4,3,2,1] class Solution { public int[] solution(long n) { String a = Long.toString(n); //length()를 얻기 위해 String 형변환 int arr [] = new int [a.length()]; int cnt =0; while(n>0){ arr[cnt] = (int)(n%10); n /=10; cnt ++; } return arr; ..

전자정부 프레임워크는 이클립스 기반으로 되어 있으며, 관련 실습 자료는 무료로 확인이 가능하다. https://www.egovframe.go.kr/home/sub.do?menuNo=65 교육자료 | 표준프레임워크 포털 eGovFrame 처리중입니다. 잠시만 기다려주십시오. www.egovframe.go.kr 위에서 본인 OS에 맞는 버전을 받아보았다. 다운 받은 후 압축 해제한 파일은 User/EGOVEDU 안에 넣는다. 그리고 실행 해당 경로로 잘 켜면 초기화면 Eclipse 기본 화면은 메뉴바, 툴바, 퍼스펙티브바, 4개의 뷰영역으로 크게 구분된다. 이 4개의 뷰를 포함 하는 전체 영역을 퍼스펙티브(Perspective) 라고 하고, 이 Eclipse Window 전체를 워크벤치 (Workbench)..

연수 기간 동안 스프링 교육 및 프로젝트를 진행하면서 구조를 확인할 수 있었다. 현재 국내에서 스프링 기반 프로젝트가 다양한 분야에서 활용 중이고 이를 정부 주도 하 표준화하여 여러 사업체에서 품질 향상 등의 긍정적인 목적으로 개발하고 보급하고 있는 것 이 전자정부 표준 프레임워크이다. 정도로만 알고 있었다. 하지만 좀 더 상세한 정보를 확인하고자 2022년 전자정부 프레임워크 컨트리뷰션에 참여하게 되었다. 전자정부 프레임워크 컨트리뷰션(이하 컨트리뷰션)은 매년 정부 주도로 진행하고 있으며 올해는 3월 28일부터 7월 31일까지 진행한다. 컨트리뷰션 전에 진행된 세미나는 의사소통이 매우 원활히 되어 참여자가 원하고 궁금한 점을 반영해 바로 다음 세미나에서 적용하였다. 세미나와 컨트리뷰션 진행을 통해 현재..

맥북을 사용하게 되면 한영을 전환할 때 Capslock 키를 누르게 된다. 타이핑 중 분명히 눌렀다. (게임할 때 변명하듯 분명히 눌렀는 데) 왜 한영 전환이 안 될까 싶은 순간이 많았다. 별것도 아닌 걸로 너무 신경 쓰이고 불편했다. 여러 가지 방법을 찾아봤지만(파일 삭제, 환경 설정 등...) 체감도 거의 안 되고 오히려 더 불편해지는 느낌이었다.. 저 상태로는 앞으로도 무척 불편할 것이다.. 해결 뒤 1. Karabiner 설치 1.1 Homebrew 설치 시(본인은 설치하였기 때문에 1.1 방법으로!) brew install --cask karabiner-elements 1.2 Homebrew 미설치 시 공식 홈페이지에서 설치 https://karabiner-elements.pqrs.org Ka..

추상화 & 추상클래스 추상화는 상속에서만 사용될 수 있는 개념이다. "추상적이다"라는 뜻은 "구체적이지 않다"라는 말과 일맥상통한다. 즉, 추상화란 구체적으로 무언가를 만드는 것이 아니다. 이 추상화 개념을 프로그래밍과 연관하여 생각한다면, 부모 클래스에서 추상적으로 메서드를 만들어 놓으면, 자식 클래스에서 해당 메소드를 다시 구체화한다. public class Main { public static void main(String[] args) { //Animal animal = new Animal("동물"); 불가능합니다. Lion lion = new Lion("사자"); lion.Growl(); Cat cat = new Cat("고양이"); cat.Growl(); } } abstract class An..

오버라이딩 오버라이딩(overriding)이란 부모 클래스의 멤버를 자식 클래스에서 재정의하여 사용하는 것을 말합니다. public class Main { public static void main(String[] args) { Parent p = new Parent(); Child c = new Child(); p.print(); c.print(); } } // 부모 클래스 정의 class Parent { public int iInt; public void print() { System.out.println("Parent Class"); } } // 자식 클래스 정의 class Child extends Parent{ public void print() { System.out.println("Child ..

상속, 부모클래스와 자식클래스 상속의 사전적 의미는 1) 뒤를 잇다. 2) 죽은 사람의 권리와 의무를 이어받는 일입니다. 일반적으로 부모가 자식에게 재산, 권리, 의무 등을 물려주는 것을 상속이라고 합니다. 프로그래밍에서의 상속 또한 비슷한 역할을 합니다. 물론 일반적인 재산, 권리, 의무를 물려주는 것이 아니라 "클래스의 멤버를 물려준다."는 차이점이 있습니다. 이때 물려주는 클래스를 "부모 클래스", 물려받는 클래스를 "자식 클래스"라고 얘기합니다. public class Main { public static void main(String[] args) { Parent p = new Parent(); Child c = new Child(); p.print(); c.print(); } } // Pare..

한창 필기 공부 중 합격 수기글들을 보고 나도 써봐야지라는 마음으로 동기부여가 많이 되었었다. 준비 일 수 : 약 한 달 반 준비 교제 : 2022 시나공 정보처리기사 필기 + cbq (개인적인 공부 준비물 : 아이패드와 팬슬) 비전공자, 약 7~8개월 동안 국비교육 연수원에서 배운 수준으로 시작 공부법 일단 한 달 반이라는 준비일 수는 여러 시행착오 끝에 나만의 공부법을 체득하고 본격적으로 공부한 일자이다. 시행착오의 기간까지 합치면 더 길어지겠지만 사람마다 차이가 있으므로 약 2~3달 정도가 적당한 것 같다....지만 솔직히 시행착오를 겪는 기간에 얼마나 열심히 했냐라고 질문하신다면 그냥 놀았습니다라고 말하는 수준이긴 하다. 전형적으로 발등에 불 떨어지면 해나가는 스타일... 시행착오 기간 처음 시작..

예제를 따라가던 도중 data-oper..? 라는 생소한 태그가 등장하였다.. 무엇일까 궁금해서 찾아보니까 여러 내용들이 나왔다. data-*를 사용하는 이유는 정보를 받아올 때 보다 간결하게 하기 위함이었습니다. 예를 들어 input 요소에 type="hidden"을 붙여 정보를 받아올 때 숨기는 방법이 있겠지만 아에 버튼 타입에 받아오는 형식으로도 가능하다는 것에 의의가 있는 것 같습니다. data-*속성은 표준이 아닌 속성이나 추가적인 DOM 속성, Node.setUserData()과 같은 다른 조작을 하지 않고도, 의미론적 표준 HTML 요소에 추가 정보를 저장할 수 있도록 해줍니다. HTML내에서 어느 엘리멘트에나 data-로 시작하는 속성은 무엇이든 사용할 수 있고, 화면에 안 보이게 글이나 ..

톰캣 실행 시 이런 오류와 함께 404 error 가 나온다. 많은 오류사항들이 있겠지만 Caused by: 맨 밑의 내용에서 핵심적인 오류 해결 힌트를 자주 확인할 수 있었다. 즉 jdbcUrl을 수락할 수 없다고 하는 것. 바로 Ojdbc6.jar 상태를 확인하지 않을 수가 없다. Mac m1칩 환경에서는 ojdbc가 원활히 호환되지 않는다..는 가정에 spring에서 본인이 할 수 있는 해결방법은 2가지였다. 필자는 Mac 사용자이고 아직 많이 부족한 상태이기 때문에 Parallels 라는 가상 os 지원 프로그램을 사용하여 window 10 운영체제에 ojdbc파일을 넣어 Mac 환경에서도 쓸 수 있도록 하고 있다. 해결 방법 1 : ojdbc6.jar 파일 직접 올리기 1.1 configure ..

예제 확인 중 c, fmt 태그가 인식 오류가 나왔다. 당연히도 결과 화면에는 테이블 결과에 아무것도 나오지 않았다. 이유는 넣지 않았기 때문이다. Maven Update 해주고 다시 프로젝트를 돌려보니.. 작성일과 수정일이 출력되지 않았다.. fmt태그도 인식오류였다.. 똑같은 방법으로 추가하고 maven update 했더니 편안하게 되었다 ..하핳...

스프링 예제를 공부하던 중 잘 되던 Log4j 임포트가 안 되었다,, 사실 몇 번 있었던 일이었고, 해결 방법도 여러 번 구글링 해서 해결했었는데 매번 검색하기보다 외울 겸 해서 메모해두기로 했다.. 문제의 화면이다.. 이런 식으로 Maven에서 Log4j가 회색으로 꺼져있는 것을 확인할 수 있다 거두절미하고 바로 해결방법! porm.xml에서 runtime 부분을 주석처리를 하면 된다! 그리고 maven update 해주면 Maven에서도 Log4j가 활성화되었고, 빨간 줄이 없어졌다!

static static 은 메서드 혹은 변수에 붙여 사용할 수 있는데 이를 클래스에서 유용하게 사용할 수 있습니다. 만약 클래스 안의 멤버에 static이 붙으면 그 멤버는 클래스의 객체를 선언하지 않고 바로 콜해서 사용할 수 있습니다. import java.io.*; class Main { public static void main(String[] args) { ClassExample.mInt = 3; ClassExample.Print(); ClassExample c = new ClassExample(); c.mInt = 20; c.Print(); } } class ClassExample { public static int mInt; public static void Print() { System.o..

- 접근제한자 접근제한자로 OOP의 4가지 특징 중 캡슐화를 가장 잘 표현할 수 있습니다. 접근제한자는 멤버 변수 및 메서드를 선언할 때 사용하며, 접근제한자를 통해 멤버 변수 및 메소드를 공개하는데 있어서 제약을 걸 수 있습니다. 접근제한자를 통해 데이터 접근을 제한한 예시입니다. import java.io.*; class Main { public static void main(String[] args) { ClassExample ce; ce = new ClassExample(); ce.mDouble = 10;// 오류 발생 ce.CE_Print_mDouble(); ce.CE_Set_mDouble(30); ce.CE_Print_mDouble(); } } class ClassExample { privat..

- 생성자(constructor) 생성자는 클래스에서 특별한 메서드입니다. 일반적인 메서드는 사용자가 호출할 때에 한해 동작하지만 생성자는 사용자가 객체를 생성할 때 자동으로 호출되는 메서드입니다. 생성자는 return 형을 사용하지 않으며 클래스와 동일한 이름을 가져야 합니다. import java.io.*; class Main { public static void main(String[] args) { ClassExample ce; System.out.println("ce object Called"); ce = new ClassExample(); System.out.println("ce Object Created"); } } class ClassExample { ClassExample() { Syst..

- 멤버(Member) 멤버란 클래스를 구성하는 요소를 뜻하며 메서드와 변수로 이루어져 있습니다. 클래스는 멤버를 통해 내부의 데이터를 저장하거나 연산할 수 있는데, 이때 클래스 내부의 변수를 "멤버 변수"라고 칭합니다. 아래 예제는 간단하게 작성할 수 있는 클래스 코드입니다. class ClassExample { double mDouble; void CE_Print_mDouble() { System.out.println(mDouble); } void CE_Set_mDouble(double dInput) { mDouble = dInput; } } 위 클래스는 ClassExample 이라는 이름으로 정의되었으며, mDouble 이라는 double형 멤버변수 CE_Print_mDouble라는 void형 메소..

- 클래스와 객체 클래스는 사용자가 직접 정의하여 사용할 수 있는 자료형입니다. 클래스와 기본 자료형은 형태의 차이점을 갖지만 '형식과 사용 방법을 명시한 실체 없는 틀'이라는 공통점을 갖고 있기 때문에, 자료형과 변수가 항상 짝을 이루는 것처럼 클래스 또한 객체와 짝을 이룹니다. 즉, '객체'는 '클래스'라는 자료형으로 만들어진 변수라고 할 수 있습니다. 클래스는 객체가 선언되었을 때 실체를 가지게 되며, 객체를 통해 클래스에 포함된 다양한 데이터를 다룰 수 있습니다. 우리 실행활에서 클래스와 객체를 비유할 수 있는 아주 좋은 예시가 있습니다. 바로 붕어빵 틀과 붕어빵의 관계입니다. 클래스는 붕어빵 틀이고, 객체는 붕어빵에 비유한 다음 두 문장이 있습니다. 1. 붕어빵 틀 없이 붕어빵이 만들어질 수 없..