ToCharArray() 함수는 String을 Char[]을 return 한다. 그래서 향상된 for문으로 한자리수씩 꺼낼 수 있다. 주로 String 값의 형식을 알아내는데 사용되고, 아래 문제에서는 ( )의 개수를 알아내는데 사용 되었다. [문제] 유효한 () 만 return, 만약에 "("가 뒤에 ")"가 없거나 " )" 가 먼저 나오는 경우는 제거 해야함. package public class ToCharArrayExaple { public static void main(String[] args) { //String s = "(a(b(c)d)"; // String s = "(((a(b(c(e(f)d))"; // String s = "in(f(lea)r)n)"; // String s = "a)b(c..
알고리즘 전략 1. 문제를 정확히 이해한다.(먼저 문제를 보고 시각화하여 어떻게 풀건지 말로 설명할 수 있어야 한다.) 2. 생각하고 프로그램화 한다. 즉 한국말로 생각하면서 이미지화 하고 Java로 코딩해야 한다. 3. 담을 그릇을 만든다 (Data Structure) 4. for(), while문을 만들고 그 안에 알고리즘을 담는다. 문제 : 숫자인 String 문자열 2개를 더한값 출력 Input: "123", "888" Output: "1011" package codingtest_java; // charAt(), subString(), StringBuilder클래스, append(), reverse().toString() // String인 숫자값을 숫자로 변환 int num = str.charA..
재귀함수 정의 컴퓨터가 수행하는 작업들은 대개 작은 조각들로 나누어 볼 수 있다. 그런데 우리가 들여다보는 범위가 작아지면 작아질수록 각 조각들의 형태가 유사해지는 작업들을 많이 볼 수 있다. 완전히 같은 코드를 반복해 실행하는 for 같은 반복문이 좋은 예다. 이런 작업을 구현할 때 유용하게 사용되는 개념이 바로 재귀 함수(recursive function)이다. 재귀함수란 자신이 수행할 작업을 유사한 형태의 여러 조각으로 쪼갠 뒤 그 중 한 조각을 수행하고, 나머지를 자기 자신을 호출해 실행하는 함수를 가리킨다. 조합과 순열 문제 간단한 반복문을 재귀함수로 변환하기 1. 조합 조합은 예를 들어 5개의 숫자를 4자리수 에 대한 숫자를 만들려고 할때 모든 경우를 구하는 것이다. 아래 문제를 보고 for문..
기능개발 문제 programmers.co.kr/learn/courses/30/lessons/42586 [풀이방법] 앞에 작업보다 뒷작업이 먼저 끝나면 앞에 작업이 끝날때 까지 기다려야 하므로 각 progresses 마다 배포일을 구한다음 progress 순서대로 배포일을 스택에 담았을때 다음 배포일이 스택에 있는 배포일보다 작다면 스택에 쌓고 다음 배포일이 스택에 있는 배포일보다 크다면 스택에 있는걸 모드 pop 한다음 배포일을 스택에 넣는다. progresses = [93, 30, 55] speeds = [1, 30, 5] 배포일은 [7, 4, 9] (배포일식: (100 - progress) / speed) [풀이 코드] import math def solution(progresses, speeds):..
시간 복잡도(Time Complexity)와 공간 복잡도(Space Complexity) 설계를 하고 코딩을 한다음 기능이 잘 동작하는 것은 물론이지만 좋은 성능까지 보장받기를 원한다. 때문에 우리는 자료구조와 알고리즘을 분석하고 평가할 수 있어야 한다. 평가는 2가지로 할 수 있다. 하나는 속도에 관한것(시간 복잡도) 다른 하나는 메모리 사용량(공간 복잡도)이다. 옛날에는 하드웨어가 안좋았기 때문에 메모리 사용량을 많이 고려했었지만 지금은 하드웨어가 매우 좋기 때문에 메모리 사용 보다는 실행속도에 초점을 둔다. 실행속도를 평가하기 위해 조건마다 다르게 실행해가면서 수행시간을 평가할 수는 없다. 그래서 수행시간을 재기 위해 연산의 횟수를 통해서 알고리즘의 빠르기를 판단해야 한다. 그러기 위해서는 데이터의..
주식가격 문제 programmers.co.kr/learn/courses/30/lessons/42584 이 문제는 prices 리스트 각각의 값들이 몇초 동안 가격이 안떨어지고 있었는지 return 해주면 되는 문제 이다. return 은 prices의 리스트의 개수만큼 이므로 for문으로 풀 경우 0으로 초기화 해주면 쉽게 풀수 있다. [풀이] 1. Brute force def solution(prices): answer =[0] * len(prices) for i in range(len(prices)): for j in range(i+1, len(prices)): if prices[i]
LeetCode 문제 leetcode.com/problems/two-sum/ 문제는 Input nums 정수형 리스트와 이 리스트로 만들어야할 값 target이 있고 리스트에서 target을 만들 수 있는 인덱스 2개를 구하면 된다. 첫번째로 풀 수 있는 방법은 첫번째 인덱스와 뒤에있는 나머지 인덱스와 더해보고 두번째 인덱스와 그 뒤에 있는 인덱스와 더해보는 방법이 있다. 대부분 처음에 이 방법을 떠올릴 것이다. [풀이] 1. Brute Force class Solution(object): def twoSum(self, nums, target): for i in range(len(nums)): #i 다음 인덱스부터 loop for j in range(i+1, len(nums)): # 첫번째 인덱스부터 뒤..
코딩테스트 처음 준비하는 사람을 위한 풀이방법 프로그래머스 해시(Hash)문제 https://programmers.co.kr/learn/courses/30/lessons/42576 먼저 문제를 보고 어떻게 푸는게 좋을지 사람에게 설명할수 있어야 코딩이 가능하다. 바로 풀이방법을 생각 하는게 어렵겠지만 쫌만 생각하면 한사람 씩 비교하는 방법 즉 2중포문을 사용하여 해결하는 방법은 생각할것이다. 풀이 방법이 생각났다면 바로 코딩해보자 2중포문으로 풀었더니 효율성에서 전부 실패 하였다. 이는 제한사항에 걸리기 때문이다. 2중포문은 시간복잡도 N^2 이다. 제한사항에 참여한 선수는 1명 이상 10만명 이하인데 10만을 N에 대입하면 100억이 된다. 100억이면 무조건 시간 초과로 테스트에 통과하지 못한다고 보..
회사 네트워크 VPN 종류 PPTP로 연결을 해야 했는데 다른 사람은 되는데 나만 안되는 것이다. 한참을 빙돌아 아래 2개를 설정하니 VPN 해결을 완벽히 해결하고 회사 네트워크 ip도 이용할 수 있었다. 첫번째로 공유기 설정화면에서 트래픽 관리의 ALG 설정 창이 있는데 여기서 PPTP가 비활성으로 체크 돼 있었다. 그래서 죽어도 PPTP로 연결이 안되는 것이였다. 바로 활성으로 바꾸고 적용하였다. PPTP 활성을 하고 나서 VPN연결을 하였는데 회사 내부 ip는 접근 할수가 없었다. 그래서 회사 컴퓨터 원격 접속도 못하는 상황이였다. 해결은 네트워크 연결 속성에서 아래를 적용해 주면 된다. 위 설정화면으로 가는 방법은 네트워크 연결 창에서 속성을 들어가고 네트워킹 탭에 인터넷 프로토콜 버전4를 선택하..
컴파일중과 실행중 에러 메시지는 대게 Caused by: java.lang.ClassNotFoundException: org.apache.tika.exception.* 이런 Class Not Found Exception이다. 이 에러는 크게 2가지 경우일때 발생한다. 첫번째 경우는 컴파일중 에러가 발생했을 경우, 두번째는 컴파일 후에 에러가 발생했을 경우이다. 컴파일중 에러가 발생했을 경우, 컴파일 후에 에러가 발생했을 경우 해결방법 이클립스에서 프로젝트를 실행했을 경우 컴파일중 에러가 발생했을 경우는 Build Path의 문제이다. Build Path는 Class Path라고 보면되는데(살짝다름) 컴파일 할때 클래스의 경로를 지정해 주는것이다. 프로젝트를 실행할때 갖가지 클래스들을 실행시킨다. 그 클래..
두개의 소스파일을 비교해서 바뀐 부분만 수정해 줘야 할때 일일이 눈으로 바뀐부분을 찾아가면서 수정하는 것은 너무나 힘든일이다. 그래서 두개의 파일을 비교해주는 툴이 필요한데 가장 간단하게 구할수 있는게 바로 Notepad의 Compare 툴을 이용하는 것인거 같다. 먼저 Notepad를 다운받고 플러그인 메뉴에서 Plugins Admin.. 을 클릭하여 compare 플러그인을 설치 할 수 있다. 설치하고 나서 비교할 2개의 파일을 띄우고 하위메뉴 Compare을 클릭하면 틀린부분만 볼 수 있다. 오른쪽파일 기준으로 보면 왼쪽파일에 있고 오른쪽 파일에는 없는것은 빨간색 회색으로 표시되며 반대는 회색 녹색 왼쪽에 있는 소스를 오른쪽에 추가해주면 회색칸은 안보이게 된다.
홈택스같은 공인사이트를 이용하거나 PC뱅킹을 이용하려고 할때 프로그램을 강제로 설치해야 하는데 컴퓨터가 겁나 느려진다. 특히 키보드 보안 프로그램들은 컴퓨터를 너무나도 느려지게 한다. 하도 설치하는게 많다보니 아에 지우는게 귀찮아 그냥 냅두는 경우가 많은데 그래서 한번에 삭제하는 프로그램이 있다. 바로 구라제거기 라는 프로그램 이다. 위 파일을 다운받고 압축 풀면 32bit, 64bit폴더가 따로있는데 자기 컴퓨터 운영체제 bit에 맞는걸 실행시키면 된다. 구라제거기 프로그램을 실행하면 설치된 구라들에 설치한 프로그램들이 보이고 모두제거 버튼을 클릭하면 모두 제거할 수 있다. 나는 다 지워서 목록이 없다.