본문 바로가기

분류 전체보기

총 금액 계산하기 밥을 먹는데 팁과 세금까지해서 얼마를 내야하는지 알아내는 소스 문제라고하기엔 너무 쉽지만 일단 포스팅해본다. public class Arithmetic { public static void main(String[] args) { Scanner scan = new Scanner(System.in); double mealCost = scan.nextDouble(); // original meal price int tipPercent = scan.nextInt(); // tip percentage int taxPercent = scan.nextInt(); // tax percentage scan.close(); double calcCost = mealCost + (mealCost*tipPercent)/100 .. 더보기
소수 구하기 알고리즘을 공부할 겸 Hackerrank라는 곳에 가입해서 문제를 풀고있다. 웹에서 작성하면 자동으로 컴파일해주고 여러가지 value로 테스트도 진행해주기 때문에 예외적인 상황에 대한 방어코드를 작성할 수 있게 해준다. 첫번째 문제는 소수 구하기였다. n이 1과 자기외엔 약수가 없을 때 소수라고하는데 해당 로직을 구현하는 것은 어렵지 않았지만테스트 도중 timeout이 걸렸고, 로직을 개선해야 했다. 처음엔 2부터 n까지 값을 증가시키며 나누어지는지 찾아나갔다. for(int j=2;j 더보기
String 객체에 대한 개념 String : 문자열을 저장하는 클래스 타입 String name; name = "홍성재"; String hobby = "자바"; 객체를 생성하면 힙 메모리에 생성된다. 이때 스택영역에는 힙메모리의 주소가 기록된다. 하지만 문자열 리터럴이 동일하면 String 객체를 공유한다. String name1 = "홍성재"; String name2 = "홍성재"; 단 new 키워드를 사용한다면 서로 다른 객체를 힙 메모리에 할당한다. String name1 = "홍성재"; String name2 = "홍성재"; String name3 = new String("홍성재"); name1 == name2 //true name1 == name3 //false name1.equals(name3) //true 관련 예제 :.. 더보기
로컬 프로젝트를 git에 업로드하기 최근에 공부를 위해 작성하던 예제들을 git에 업로드하고있었다.블로그는 글도 써야하고(?) 귀찮아서.... 간단한 예제들(정렬 알고리즘, 디자인패턴)은 web에서 드래그를 통해서 업로드!(사실 어떻게하는지 몰라서 한참 찾았다.) 문제는 게시판을 만들기 위해 작성한 Spring프로젝트였다.드래그를 통해서는 100개 이상 못올린다더라... 플러그인만 해도 100개가 넘어가서... 허고수님에게 배운 git cli를 처음으로 써보기로했다.(추석때 배운건데 한번도 안쓰다가 쓰려니 기억이 가물가물....) 기억을 짚어가며 어찌어찌 해내었다ㅠㅠ 1. Git cli를 설치한다.- mac은 터미널에 기본적으로 설치가 되어있다.- 문제는 windows인데 https://git-scm.com/downloads 에서 설치가능.. 더보기
제네릭이란? 제네릭(generic) 예제 제네릭(Generic)사전적 의미 : 포괄적인, 회사 이름이 붙지않은 하지만 프로그래밍적 관점에서 보자면 비슷하지만 다른 의미로 사용된다.클래스 내부에서 사용할 데이터 타입을 외부에서 지정하여 사용하는 방법, 즉 클래스 내부 데이터 타입을 인스턴스 생성할 때 확정하는 것을 제네릭(Generic)이라고 한다. 우선 제네릭이 무엇인지 알아보자. package devhong.tistory.com.generic; class Person{ public T info; Person(T info){ this.info = info; } } public class GenericMain { public static void main(String[] args) { Person p1 = new Person("test"); Pe.. 더보기
안드로이드(android) 핸들러(Handler) 예제2 안녕하세요 코코콩입니다. 지난번에 메시지를 핸들러로 보내 작업을 처리하는 부분을 포스팅했었는데요이번 포스팅에선 지난번에 한 메시지를 핸들러로 보내는 예제를 Runalbe객체를 보내 실행하는 방법으로 변경하는 것을 알아보겠습니다. class BackRunnable extends Thread{ public void run(){ while(true){ backValue++; Message msg = new Message(); msg.what = 0; msg.arg1 = backValue; mHandler.sendMessage(msg); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e... 더보기
안드로이드(android) 핸들러(Handler) 개념 & 예제 안녕하세요. 지난번 작성했던 쓰레드와 이어지는 핸들러에 관한 내용입니다. 백그라운드 쓰레드에서 연산작업만 가능하며 다른 쓰레드 소속(UI : 메인쓰레드)의 UI를 건드릴수 없다고 했는데요. 그 이유는 바로 동기화 문제가 발생하기 때문입니다. 예를들어 하나의 텍스트뷰를 두개의 쓰레드에서 수정한다면 아래와 같은 일이 발생할 것입니다. 쓰레드는 병렬적으로 실행되므로 위와 같은 일이 빈번하게 발생할 수 있습니다. 이러한 이유로 백그라운드 쓰레드에서 연산작업은 가능하지만, 메인쓰레드의 UI인 텍스트뷰에 값을 변경할 수 없습니다.그렇다면 백그라운드에서 연산된 값을 적용하려면 메인쓰레드에 알려 텍스트뷰를 갱신해야하는데 이떄 쓰레드간의 통신을 도와주는게 바로 핸들러(Handler)입니다. 핸들러는 항상 자신을 생성하는.. 더보기
안드로이드(android) 쓰레드(Thread) 개념 예제 안녕하세요코코콩입니다. 이번엔 쓰레드에 대해 공부하고, 예제를 통해 실습해보도록 하겠습니다. "쓰레드(Thread)란 무엇인가." : Thread는 프로그램에서 실행되는 흐름의 단위를 말한다. 일반적으로 하나의 Thread를 가지고 있지만, 환경에 따라 둘 이상의 Thread를 동시에 사용할 수 있다. 이를 멀티쓰레드(multi thread)라고 한다. 위 설명 그대로 하나의 실행단위인데요, 이를 이용해 음악을 들으며 인터넷서핑을 하는 등 동시에 여러 작업을 진행할 수 있습니다. 1. Thread의 선언 Thread() : 디폴트 생성자로 Thread객체를 생성한다. 생성된 객체는 독립적으로 실행되며 고유의 스택을 가진다.Thread(Runnable runnable) : Runnable 인터페이스 구현객.. 더보기
Android Manifest의 launchMode 오늘 아침 연락을 받았다.내가 개발한 광고 SDK에서 버그가 발견되었다는 것이다ㅠㅠ물론 버그없는 프로그램은 없지만......가슴이 아프다어떠한 버그인지 확인하니 다음과 같았다. 앱실행 -> 광고실행 -> 광고시청중 홈버튼으로 바탕화면 -> 바탕화면에서 멀티태스킹버튼으로 광고진입 -> 광고 이어서 재생 -> 시청 완료 -> 광고 종료 후 바탕화면(?) 참 어렵다.... 뭔놈의 상황인지... 우선 현상을 보니 Manifest의 문제로 예상. 가장 의심스러운 launchMode를 확인하니... singleInstance!! 이것 때문에 광고가 새로운 Task로 인식이 되어, 광고가 끝나니 다시 배경화면으로 이동된 것이다. 그래서 singleTask로 변경하니 앱과 광고가 하나의 Task로 인식이 되어 정상적로.. 더보기
스트래티지 패턴(strategy pattern) 스트래티지 패턴(Strategy Pattern) 스트래티지 패턴(Strategy Pattern)에서는 알고리즘군을 정의하고 각각을 캡슐화 하여 교환해 사용할 수 있도록 만든다. 스트래티지 패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 예제를 통해 알아보도록하자(예제는 헤드퍼스트의 디자인패턴 책에서 인용) 1. 간단한 오리 어플리케이션 한 개발자는 오리 어플리케이션을 만드는 회사에서 근무하고있다. 현재 오리 어플리케이션엔 울기, 헤엄치기의 기능이 있으며 성공적인 서비스를 진행하고있다. 이 어플리케이션은 UML을 과 같이 추상클래스인 Duck을 만들어 오리들의 공통항목인 꽥(quack)과 헤엄(swim), 그리고 모습그려주기(display)를 정의하였고, 이렇게 생.. 더보기