목록분류 전체보기 (47)
MSM8994의 화룡점정 블로그
윤년 구하는 코드 찾아보면서 한 줄로 어떻게 안되나 싶은 마음이 드셨을겁니다. year % 4 == 0 && year % 100 != 0 || year % 400 == 0 4년마다 오고 100년마다는 아니지만 400년마다는 윤년이 되는걸 짧게 표현할 수 있을까?. 그래서 인터넷을 돌다가 이런 코드가 눈에 밟혔습니다.자바스크립트로 짜여진 21자 코드인데 원형은 이렇게 생겼습니다. 여기서 y는 년도입니다. !(y%(y%25?4:16))(출처: https://codegolf.stackexchange.com/questions/50798/counting-leap-years) 자바스크립트는 C처럼 0을 false로, 나머지를 true로 사용할 수 있습니다.따라서 이런 암시가 없는 자바를 위해 조금 바꾼다면 조건이 ..
문제다음 입력 형식과 같이 입력받은 후 화폐 단위별로 화폐의 매수를 계산하여 출력 형식에 맞게 출력하시오. 입력엄철식 539620 양동수 538973 이동훈 173105 출력 출장비지급표 성명 지급액 오만원 만원 오천원 천원 오백원 백원 오십원 십원 오원 일원 --------------------------------------------------------------------------- 엄철식 539620 10 3 1 4 1 1 0 2 0 0 양동수 538973 10 3 1 3 1 4 1 2 0 3 이동훈 173105 3 2 0 3 0 1 0 0 1 0 --------------------------------------------------------------------------- 전체 화폐..
오늘은 1부터 N까지의 자연수, 홀수, 짝수 합을 구하는 방법을 알려드리겠습니다. 매개변수 전달방법먼저 매개변수를 전달하려면 페이지 주소 뒤에 ?num=10 이렇게 전달하시면 GET 방식입니다. 여기서는 괜찮으니 이렇게 불러오도록 하죠. (파일이름).jsp?num=10이렇게 주소칸에 적으시면 됩니다. 본격적인 코딩 시작혹시나 모르니 UTF-8 인코딩으로 매개변수를 읽으시구요.request.setCharacterEncoding("UTF-8"); num매개변수를 쓰겠다고 했으니 이것을 strNum으로 읽어온 다음 parseInt(strNum)한 수를 num에 기억합니다. 단, 못 읽어왔을때 진행해서는 안되므로 초기값은 -1로 설정해둡니다.String strNum = request.getParameter("n..
자바에서 임의의 수 6개를 만드는건 지난 글에서 소개가 되었죠? 오늘은 이걸 자바스크립트로 옮겨보겠습니다. 시작 먼저 form을 생성합니다. 특정 속성에 적용하는 스타일에 관해선 여기를 참고해주세요. 행운의 번호는 다음과 같습니다: 배열을 생성합니다. new Array(갯수)는 new Array(값, 값, ... 값)과 헷갈리므로 쓰지 않으시는게 좋습니다. 대신 []을 쓰세요. 자바스크립트에서 배열은 부르는게 원소 입니다. 아무거나 부르면 undefined지만 아무거나 넣으면 거기 직전까지 배열을 키워서 각각 undefined를 채워넣고 거기에 값이 들어갑니다. // 배열 생성. new Array(갯수)는 new Array(원소, 원소,...)랑 헷갈리므로 쓰지 마세요. var numbers = []; ..
문제 출제를 누르면 구구단에 해당하는 두 수가 나오고 입력칸에 수를 입력한 뒤 정답 확인을 누르면 정오를 확인할 수 있는 퀴즈를 만들겠습니다. 먼저 폼을 구성합니다. 문제가 표시될 입력칸을 읽기 전용으로, 문제 출제에서 getQuiz() 함수를, 정답 확인에서 getAnswer() 함수를 호출하도록 했습니다. 스타일이나 폼 입력칸을 참조하는 내용에 관해선 지난 글을 참고해주세요. × getQuiz()메소드를 작성하되 임의값 생성은 이렇게 합니다.//Math.random()은 0.0
자바스크립트를 통해 인터넷 접속 필요없는 계산기를 만들어 보겠습니다. 먼저 폼을 만듭니다. 결과가 표시될 입력칸에 읽기 전용 속성을 readonly 키워드로 넣었습니다. ? 더하기 빼 기 곱하기 나누기 나머지 계산하기 버튼을 눌렀을 때 onClick에 지정한 calcNow()함수를 참조하도록 합니다. 이제 calcNow()함수를 사이에 선언합니다. calc 폼의 left, right, result_plus, result_minus...의 입력칸을 참조하기 위해서 calc.left 같은식으로 참조하고, 그 객체가 입력란이므로 value 속성을 호출해 값을 사용합니다.// form name의 경우 getElementById(string)나 getElementsByName(string) 같은거 필요없다 // ..
배열을 만들고 이 배열의 길이만큼 임의의 수를 넣으려고 합니다. 로또처럼 1~45 사이의 수로 하려면 이렇게 하세요. Math.random()을 활용하되 0.0~0.99999... 까지밖에 안되는 값에 최대값을 곱해서 0~44.99999... 로 만들어주세요. 여기에 1을 더해 1~45.99999로 만들고 int형으로 변환하면 1~45까지의 임의의 수가 나옵니다. 로또에는 같은 숫자가 다시 뽑혀나오지 않으므로 직접 중복여부를 검사해서 중복인 경우 해당 칸을 다시 반복하도록 합니다. int[] numbers = new int[6]; // 6개의 정수를 담는 배열 선언 // insertCur가 numbers 배열의 길이를 넘지 않을 때까지 반복합니다. // 중복이 생긴다면 반복 횟수가 늘어날 수 있습니다. ..
오늘은 Calendar 객체를 통해 오늘 날짜를 구한 뒤 clone() 으로 객체를 복제합니다. 그 복제한 Calendar 객체를 하루 앞당긴 다음 각 날짜 요소를 추출하여 문자열로 바꿔보고, SimpleDateFormat 을 통해서도 바꿔봅니다. 그리고 compareTo를 이용해 어느쪽이 앞인지를 비교하는 소스입니다. 두 날짜는 같은 형식으로 짜여져있어야 합니다. 월일년이나 일월년 처럼 큰게 뒤로 가버리는 경우 비교가 되지 않습니다. parseInt로 수로 변환해 사용하는 경우 자료형 범위 한계로 Long을 사용해야 합니다. // 오늘 날짜와 어제 날짜를 구해서 비교하기. // 오늘 날짜 Calendar today = Calendar.getInstance(); // 어제 날짜는 오늘의 -1일 Calen..
지난 글(보려면 클릭)에서 자바에서 어떤 멤버변수의 Getter 와 Setter를 만드는 방법을 알아봤습니다. 그런데 이건 그냥 프로그래머가 메소드를 만들어 쓰는 방식이라 단순 대입과는 다르게 코드 내에서 구별해내기 힘들지도 모르겠습니다. C#의 '속성'이런 기법을 언어 자체에서 지원하는게 있습니다 바로 C#입니다. 속성(property)라는 개념으로 지원되며 간단히 Getter와 Setter를 만들 수 있습니다. C#에서 속성은 첫글자를 대문자로 씁니다. public double Average { get; private set; } // 학생의 점수 평균학생의 점수 평균를 담는 속성을 만들었습니다. Setter가 private로 선언돼 다른 클래스가 이 값을 수정하려는 의도로부터 보호받고 있습니다. 그..
클래스에 소속될 멤버 변수를 선언하실 때 무심코 아래와 같이 만드는 경우가 있을 겁니다. public int score = -1; // 학생의 점수를 기억 (-1: 입력되지 않음) 그리고 접근할 때 아래처럼 하시겠죠. student[i].score = inputScore; // 가장 간단히 멤버 변수 값을 바꾸는 법 이렇게 하는 것이 가장 간단하기 때문일겁니다. 그러면 입력될 점수에 유효범위가 필요할 때는 어떻게 하면 좋을까요?if(0