'Programming'에 해당되는 글 19건

  1. 2008.05.27 자바스크립트로 페이지 이동 팁 (2)
  2. 2007.09.10 졸업을 앞둔 대학생 입장에서 바라본 좋은 프로그래머가 되려면 열심히 배워야 하는 중고등학교 교과 과목 (6)
  3. 2007.07.28 객체지향적인 프로그래밍이란 것은 무엇일까? (4)
  4. 2007.05.06 스레드를 이용한 병렬처리 프로그래밍 – 2
  5. 2007.03.21 간단하고 쉬운 프로그래밍 문제 3 : 피보나치 수열 (4)
  6. 2007.03.11 간단하고 쉬운 프로그래밍 문제 2 : 소수 구하기 (4)
  7. 2007.03.10 간단하고 쉬운 프로그래밍 문제 1 : 받은 수 만큼 더하기 (2)
  8. 2007.03.05 [문제] 초등학생도 풀만한 기초 문제 – 9 : 다이아몬드 만들기
  9. 2007.02.25 [해설] 초등학생도 풀만한 기초 문제 2 – 삼각형 변형 1 해설
  10. 2007.02.15 [문제] 초등학생도 풀만한 기초 문제 – 8 : 이등변 삼각형 4

자바스크립트로 페이지 이동 팁

보통 게시판에서 게시물을 지우거나, 댓글을 지울 때 자바스크립트 창을 띄워 “림하 지울꺼삼?”과 같은 간단한 맨트로 지울 것인지 묻는 경우가 많습니다.
이것을 자바 스크립트 코드로 표현하면

<script type="text/javascript" language="javascript">

<!--

function del(num){

              if(confirm('삭제 하시겠습니까?'))

                    location.href = "delete.jsp?id=" + num;

}

-->

</script>

<a href="#" onclick="del(1);">삭제</a>

이런 식으로 하면 되는데… 문제는 저 함수의 재사용 성이라던가, #기호 사용에 따른 화면 위치 이동 등… 여러 자잘한 문제가 남아 있습니다. (서버 스크립트 문제 중 대표적으로 PHP에서는 HTTP_REFERER가 기록이 되지 않더군요)
그래서 이리 저리 고민하다가 혹시? 하는 생각에 이렇게 하니 더 간단해 지고 위의 문제들이 모두 해결되더군요 ^^

<script type="text/javascript" language="javascript">

<!--

function del(){

              return confirm('삭제 하시겠습니까?');

}

-->

</script>

<a href="delete.jsp?id=1" onclick="return del();">

어때요? 참 쉽죠? ^O^
submit을 할 때 onsubmit=”return function();” 이런 식으로 하면 함수의 리턴 결과에 따라 submit이 작동되는 여부가 결정되던 것이 기억나 적용하니 매우 만족스럽게 작동 하더군요 ^^
여튼, 위 코드에 문제가 있으면 댓글로 알려주세요 ㅎㅎ

덧) 위 코드는 Internet Explorer 7.0, Firefox 2.0, Opera 9.27, Safari 3.1 에서 모두 테스트 해봤습니다. 안심하고 사용하세요 ^^

신고
Trackback 0 Comment 2
  1. kaspy 2012.04.15 02:25 신고 address edit & del reply

    잘참고합니다^^!!

  2. 2012.07.24 17:24 address edit & del reply

    비밀댓글입니다

졸업을 앞둔 대학생 입장에서 바라본 좋은 프로그래머가 되려면 열심히 배워야 하는 중고등학교 교과 과목

아따, 제목 길다 ㄱ-
어째튼...

다들 아실지 모르겠지만, 프로그래밍... 정확히 개발자, 그 이상을 목표로 두고 공부를 하고 있는 저 입니다만, 제 입장에서 본 중요한 교과과목을 꼽으라면... 아무리 생각해도 이것인것 같습니다.

모든 과목

... 농담 아닙니다.
혹시나 간추려 달라고 하신다면... 딱 세가지만 꼽아보죠

국어, 영어, 수학

웬 뜸금없이 국영수냐? 라고 하실지 모르겠지만, 제 입장에서 보면 맞는것 같습니다.
왜냐하면~

국어
혼자 프로그래밍 하신다면 뭐 할 말은 없지만, 아마 대부분의 사람들은 회사에 들어가게 되서 사람들과 같이 개발을 하게 될것입니다. 그러면 문제가 되는것이 바로 대화와, 문서입니다.
아무리 실력이 있어도 상대방이 요구하는것을 잘못 이해하거나 대화가 안통하면 말짱 꽝이죠 -_-;; 그리고 자기가 작업한 것에 대해  주석을 달고 문서화를 시켜야 하는데 글을 잘못써서 이해가 안되면 뭔가 난감하죠 -_-;;; 어떨 경우에는 자기가 써 놓고서 자기가 못알아 보는 경우도 많습니다. (대표적인게 바로 저...) 국어공부 열심히 하세요

영어
뭐, 다른곳에서도 귀아프게 들으셨을지도 모르겠지만. 영어 중요합니다. 뭐, 외국사람과 대화할 정도의 실력을 갖추라는 이야기는 아닙니다. 단지
영어 책이나 영문 사이트 읽고 해석하고 쓸 정도만 되면 됩니다...
... 그럼 다 할줄 아는거잖아! ㅠ.ㅠ
왜냐~ 한국에 있는 모든 번역서들은 기초서적입니다 -_-;; 중급 이상 올라가려면 원서나 다른 나라 번역서를 봐야 한다는 이야기인데, 뭐, 그건 그렇고
그리고 어떠한 문제가 발생을 하게 되면 보통 인터넷을 찾아보죠? 그런데. 온갖 쓰레기 답변과 깊이도 없는 그런 답변만 올라와 있는 네이버를 뒤지시겠습니까? 아니죠? 자자, 영어도 공부하세요
(그런 의미에서 영문 사이트에서 자료를 잘 찾아내시는 싸인펜님 참 부러워요 ㅠ.ㅠ)

수학
이 부분에서 의외로 많은 사람들이 의아해 할 지도 모르는데... 제가 프로그래밍을 처음에 어떻게 접근했는지 알려드리면 해답을 얻을 수 있을지 모르겠네요.
제가 고등학교때부터 프로그래밍이라는것을 접하게 됬는데 그때 잘 나가다 변수에 관해 들어갈 때 일이였습니다.

i = 1

뭐, 프로그래밍을 공부하신 분이라면 i라는 변수에 1을 대입한다는 의미로 받아들이시겠지만 저는 이것을

i는 1과 같다

로 해석했습니다. -_-;;;
네, 다분히 수학적이죠? (그래서 저는 그 때 당시 i 보다 x나, y를 더 즐겨 썼었습니다 ㅎㅎ) 그럼 다음과 같은 경우에 조금 난감하게 되는데요

i = i + 1

프로그래밍 공부하신 분이라면 i라는 변수에 들어있는 값을 1과 더해서 다시 i에 넣어라... 라고 읽으시겠지만 그 때 저는

i는 이전의 i에 1을 더한 값과 같다

뭐, 어떻게보면 비슷 합니다만, 뭔가 미묘하게 다르죠?
하여튼 이런 사고로 시작한 프로그래밍이 나중에 큰 벽이 되버리긴 했지만(객체지향 문제에서), 어째튼 중요한것은 컴퓨터는 수학을 기초로 만들었기 때문에 수학이나 프로그래밍이나 비슷하다는 겁니다.

또 다른 예로 제 동생이야기인데
고등학교때 부터 수학을 좀 잘 한다 싶더니 대학교를 전자과 쪽을 들어가 4학년이 되서 C언어를 듣게 되었습니다. 그래서 저한테 물으러 왔었는데 참 재미있는게
분명 배운지 2주밖에 안됬는데 제가 짠 프로그램을 보고 분석하고 이해한다는 것이죠 -_-;;;;
그래서 제가 어떻게 그걸 보고 해석하냐고 물으니까 하는 말이...

"수학이랑 똑같잖아"

음, 물론 객체지향으로 넘어가게 되면 위 말은 맞는 말이 아니게 되지만(그렇다고 틀린말도 아님) 어째튼 수학을 잘 하게 되면 프로그래밍에 접근하기 쉬워집니다. 특히  게임 프로그래밍이나 3D프로그래밍을 하게 되면 필수입니다. (덤으로 저는 웹 페이지 하나 만들더라도 수학은 아니더라도 산수 공식으로 꽉 채웁니다. 왜냐고요? 결국 각 위치나 배열을 정하는것은 숫자거든요)

결론은... 수학도 하세요 ^^

말이 좀 길어졌습니다. 제가  중 고등학생 이상을 대상으로, 그리고 처음 접하는 사람들을 위주로 쓰긴 했어도 요점은 "학교 공부 열심히 하세요"입니다. 프로그래밍을 하다 보면 의외로 역사의 흐름과, 생물학적 관계도, 끈기 있는 체력, 과학에서 나오는 원리, 그밖에 여러가지가 필요하게 됩니다. 그리고 가끔 손수 그림을 그리기도 하고, 음악도 선정합니다 -_-;;

혹시 대학생이시라면 교양 과목으로 철학이나 경영학을 들어두세요 도움 됩니다.

뭐, 어째튼 아직 학생 입장에서 생각한 이야기니까, 너무 얼매이지 마세요 하지만 위에서 말한 과목들이 다른 직장에서 역시 생각외로 필요하게 된다는 것을 알아두세요 ^^

아, 혹시 제가 개발자로 5년 이상 일하고 이 블로그를 계속하고 있다면 개발 X년차 로 해서 또 올리죠 ㅎㅎ

신고
Trackback 0 Comment 6
  1. Favicon of http://stdio.tistory.com BlogIcon 머리 2007.09.10 01:35 신고 address edit & del reply

    글 잘 읽고 갑니다. ^^

    정말 공부중이지만 뼈저리게 느끼고 있는 것들이네요.. 국어.. 주석도 주석이지만 나중에 매뉴얼 만들때나 리포트 쓸때도 많이 필요하지요.

    수학같은경우도 지금 제가 대학 1학년생이라 아직 수학을 많이 접하진 않고 있지만 나름 프로그래밍 해보면서(프로그래밍 한지는 한 10년 되었습니다.) 엄청나게 많이 쓰고 있는 분야지요. 특히 그래픽 작업할때 행렬.. 무지 많이 쓰이더군요.

    영어도 원서를 접하게 되면서 공부해야겠단 생각이 참 많이 들어요. 구글링 하면서도 외국 문서들이 참 좋은게 많은데 그럴때 영어 안되면 좀 글쵸.

    암튼 글 잘 보고 갑니다 ^^

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.09.10 23:55 신고 address edit & del

      에고, 잘 보셨다니 다행이네요 ^^

  2. Favicon of http://rukxer.net/ BlogIcon Rukxer 2007.09.10 16:30 신고 address edit & del reply

    시간이 지날 수록 여러가지를 관심 가졌다는 게 잘 한 일이라고 느껴지더군. 국영수만이 아니라 되도록 많은 걸 접하면 더 좋지만, 공부할 시간까지 빼면서 접할 수는 없는 노릇이니 적당히....-___-;;;

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.09.10 23:57 신고 address edit & del

      역시 많은 경험이 중요한거군요

  3. Favicon of http://mydb.tistory.com BlogIcon 파도소리 2007.09.13 10:08 신고 address edit & del reply

    국영수보다도 무엇보다 체육이 중요함니다! ㅋ


    뭐니뭐니해도 건강이 최고
    더구나 야간작업이 많은 프로그래머라면 당연히 체력이 최고

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.09.14 00:24 신고 address edit & del

      그건 정상적인 환경이 아니잖아!
      ㅋㅋㅋ

객체지향적인 프로그래밍이란 것은 무엇일까?

고등학교시절 C++을 알게 되면서 객체지향 프로그래밍(Object Oriented Programming, 줄여서 OOP) 에 대해 궁금증을 가지게 되었습니다.

도대체 이런 게 왜 필요하지? -_-??

일의 순서에 따라 작업을 처리하는 절차 지향적 프로그래밍 언어를 공부했던 저는 그래도 C의 신 버전이라는 착각 속에 공부를 시작했지만, 이놈에 Class에서 막히는 것이었습니다.

막힌 이유는 바로

대체 이걸 왜 써?

머리에 완벽히 절차지향으로 고정이 되어 버려서 필요성을 못 느꼈고, 게다가 엄청나게 늘어나 버리는 코딩 량의 압박에 좌절했습니다. (얼마나 늘어나는지 앞으로 보게 될 것 입니다. ㅎㅎ)

어째튼 그 뒤로 Rukxer형과 함께 일했을 때, HTML의 폼의 구조와 이것을 접근하는 JavaScript의 방식을 보고 조금씩 객체지향의 구조와 필요성을 알게 모르게 느껴가고 있었고, 대학에 들어가 Java를 배우니 왜 이것이 필요한지를 느끼게 되었고, 이제 나름대로 사용할 수 있게 되었습니다. (물론 잘 하는 건 아니지만 ^^;)

뭐 객체지향에 대해 설명하라면 제가 직접 하는 것 보다 책에 써 있는 것이 더 잘 표현되어있기 때문에 생략하고~

그럼 구체적으로 어떤 식으로 작성해야 객체지향 프로그래밍이 될까요? 들어가기 전에 절차지향적으로 작성된 프로그램의 예제를 가지고 설명해 보겠습니다.

Triangle.c

제가 자주 써먹는 (아주 우려 먹어라 -_-;;) 삼각형 예제를 가장 널리 쓰이고 있는 절차지향 언어인 C로 작성했습니다. 정말 간단하죠? 그럼 이것을 객체 지향 언어로 구현하면 어떻게 될까요?

Triangle.cpp

이렇게 될까요? 아니죠~ 객체지향 언어 가지고 절차지향으로 작성한 것 밖에 안됩니다. -_-+
그래서~ 준비했습니다. 객체지향 언어인 자바로 작하였고, 객체지향적으로 설계한 삼각형입니다.

.java

… 쿨럭!! -_-;;

C로 작성한 삼각형이 24라인으로 콘솔 모드로도 한 화면에 다 표시할 수 있는 것에 비해 자바로 작성한 삼각형은 모두 다 합쳐 무려 192라인으로 무려 8배나 되는 라인 수를 자랑합니다 -_-;;

그럼 간단히 해설에 들어가면
삼각형의 정의는 [삼각형(三角形)은 세 점을 선분으로 이어 만든 도형이다. 삼각형의 세 점을 꼭지점이라 하고, 선분을 변이라고 한다.] 라고 되어있습니다. (출처 : 위키)
간단히 이야기해 3개의 점에 선이 달린 것이 삼각형이랍니다 -_-;;

그런데 중간에 도형이라는 단어가 눈에 뜨이죠? 그래서 찾아봤습니다.
도형의 정의는 [기하학에서 도형(圖形)은 점•선•면의 집합이다.] (출처 : 위키)
결국은 삼각형은 도형중 하나인 것입니다. ㅎㅎ

그런데 또다시 눈에 띄는 것 중에 하나가 선이라는 것이 있습니다. 그럼 선은 무엇일까요?
선의 정의는 [선은 줄을 말한다] 랍니다. 장난하냐? (출처 : 역시 위키 -_-;;)
음음, 그럼 다른 곳을 찾아보려다 그냥 기억 속에 있는 것을 꺼내겠습니다.
언제인지는 모르겠는데, 하여간 수학시간에 이런 말을 들은 것 같습니다. [수많은 점들이 일열로 빈틈없이 늘어서면 선이 된다.] 하여간 이거만 믿고 갑니다 ㅋㅋ

다음 점에 대한 정의로 [점(點)은 수학에서 크기를 갖지 않고 공간을 점유하지 않지만 위치 등을 지정할 수 있는 가상적인 개체이다.] (출처 : 위키)
결국 이게 마지막인 것 같네요. 개체까지 내려왔으니까요 ㅎㅎ (프로그래밍에서 개체는 곧 객체가 됩니다.)

결국 필요한 것은 점, 선, 도형, 삼각형 이렇게 4개가 되겠습니다. 그리고 그것을 구체화 시킨 것이 바로 제가 작성한 삼각형이 되겠습니다. (1개 더 추가한 것은 선과, 도형 둘 모두 점을 필요로 해서 점을 저장해 두는 개체를 만들어 둘에게 상속받게 만들었습니다. 코드 양을 줄이기 위해 -_-;;)

어째튼 객체지향을 이해하신 분들이라면 소스를 보면 대충 이해는 하실 겁니다. 납득은 못하실 것 같지만 -_-;;
그렇다고 결국 객체지향은 나쁘다! 라고 이야기 하는 것은 절대 아닙니다. 객체지향적으로 작성할 경우 처음에는 좀 길어질 수 있지만 잘 만든 객체 하나 덕에 나중에 더욱 편하게 프로그래밍 작업을 할 수 있는 것이 바로 이 객체지향 프로그래밍이거든요. 요즘 졸업작품을 만드는 중인데 객제지향 프로그래밍에 대해 새삼 놀라움을 느낍니다. 정말 잘 만들어둔 객체 덕에 편하게 작업하고 있거든요 ^^ (구체적으로 다향성 덕에) 어째튼 여러분들도 심심하면 한번 도전해 보세요. 절차지향적인 프로그램을 객체지향으로 바꾸는 것을요 ^^

참고]
테스트에 사용한 컴파일러 : gcc 3.4.2, g++ 3.4.2, javac 1.6.0_02

문제될만한 부분이나, 버그를 알려주시면 감사하겠습니다 ^^

덧]
웃자고 만들기 시작했는데 정신을 차려보니 경각심을 불러일으킬 소지를 지는 글로 변했다는... 쿨럭!

신고
Trackback 1 Comment 4
  1. Favicon of http://signpen.net BlogIcon 싸인펜 2007.07.30 00:05 신고 address edit & del reply

    최근 객체지향에 대한 재미난 이야기를 친구에게 들어서 트랙백을 남겨봅니다.
    객체는 잘게잘게 쪼개야죠^^ㅋ 그리곤 객체 하나에 너무 많은 일을 시키면 안되죠. 공감합니다~ㅋ 코드는 자세히 살펴보진 못했지만요. 자바코드... 너무 길어요..;;

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.07.30 09:01 신고 address edit & del

      너무 잘개 쪼개면 성능저하가 일어나긴 하지만, 역시 적당히 잘개 쪼개줘야죠 ^^
      그리고 자바코드는... 일부러 길게 만들었습니다 ㅎㅎ
      객체지향의 은닉화 때문에 저런일이... 쿨럭!

  2. Favicon of http://mydb.tistory.com BlogIcon 파도소리 2007.09.02 20:02 신고 address edit & del reply

    형,, 아 또 이런걸.. ㅋㅋ

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.09.02 23:22 신고 address edit & del

      너도 이런것좀 해봐 재미있어 ㅋㅋㅋ

스레드를 이용한 병렬처리 프로그래밍 – 2

예전에 "스레드를 이용한 병렬처리 프로그래밍"이라는 이름으로 스레드를 이용, 멀티코어를 위한 프로그래밍에 대해 간단히 이야기 한 적이 있습니다. 하지만 그 때에는 단순히 "CPU를 동시에 이용이 가능하다" 까지만 이야기를 해서 이번엔 멀티코어에 맞춰 만들어진 프로그램이 어느 정도 성능에 이득이 있을까를 두고 실험을 해 봤습니다.

지난번과 마찬가지로 Java로 구현을 했습니다. 구현 알고리즘은 "홀수 마방진"(알고리즘에 따른 속도차이편의 알고리즘을 사용했음)이고, 측정 기준은 선언부와, 출력부 기타 등등을 모두 제외한 순수 연산부분만을 측정했습니다.

우선 첫 번째로 스레드가 1개(스레드가 없을 때와 동일)일 때 상황입니다.

사용자 삽입 이미지
344ms군요. 32bit에서는 405ms에 처리했었습니다.

그럼 다음으로 스레드가 2개일 때 상황입니다. 듀얼코어나 그 이상의 프로세서를 가진 컴퓨터에서라면 효과가 있겠죠?

사용자 삽입 이미지
187ms입니다. 32bit에서는 218ms에 처리했었습니다. 2배까지는 아니더라도 2배 가까이 빨라졌습니다.

이것으로 잘만 작성하면 멀티코어 CPU를 지원할 수 있다는 것이 입증이 되었습니다 ^^ 혹시 이걸 사용해보실 분은 받아가서 사용해 보세요. 혹시 버그가 있으면 말씀해 주시고요 ^^

설명서 보기

저작자 표시 비영리 변경 금지
신고
Trackback 0 Comment 0

간단하고 쉬운 프로그래밍 문제 3 : 피보나치 수열

지난번 문제에 대해 아무리 생각해도 너무 오버해서 낸 것 같아서(-_-;) 이번에는 조금 쉬운 문제로 나가겠습니다. 바로 피보나치 수열입니다.

문제
입력 받은 수 안에서의 피보나치 수열을 구하는 프로그램을 작성하시오.

100안에 있는 피보나치 수열
1 1 2 3 5 8 13 21 34 55 89

조건
초급 : 어떻게든 작성하세요 -_-;;
중급 : 재귀함수를 이용해서 작성하세요.

흐름대로라면 1편에 이어서 나와야 했지만 이제야 이 문제를 기억해 내서 지금 냅니다 -_-;
이 문제 역시 중학교 수준이니 어렵지 않게 푸실 수 있으실 겁니다. 아, 소스는 올리더라도 비공개 아시죠?

신고
Trackback 1 Comment 4
  1. Favicon of http://stellar.pe.kr/tt/ BlogIcon StarLight 2007.03.21 02:03 신고 address edit & del reply

    일반항 사용.... (죄송합니다;;)
    점화식을 재귀함수화 시키면 될 듯 하네요.

  2. Favicon of http://deios.anitouch.net/world/ BlogIcon Deios 2007.03.26 19:22 신고 address edit & del reply

    하하핫...
    아직 저번 문제도 풀기 전인데...
    또 새로운 문제가 나왔네요 ㅠ.ㅠ;;;

    저번주랑 이번주는 정말 정신이 없어요 ㅠ.ㅠ;;;
    블로그도 이전하고... 이래저래... ㅠ.ㅠ;;;

간단하고 쉬운 프로그래밍 문제 2 : 소수 구하기

저번 문제는 삼각형보다 쉬워서인지 금방금방 푸시더군요. 난이도를 좀 더 올릴까, 아니면 그냥 이대로 낼까 고민 중입니다. ㅎㅎ

문제
2부터 입력 받은 수 사이의 소수를 구하는 프로그램을 작성하세요
여기서 소수는 1과 자기 자신 이외에 나눠지지 않는 수를 말하는 것입니다.

1~100 사이의 소수
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

조건
초급 : 어떻게든 작성하세요 -_-;;
중급 : 속도를 좀 더 올리기 위해 소수를 배열에 넣어 처리를 하고 단순한 방법보다 더욱 빠른 속도로 작동하게끔 작성하세요.(여러 방법이 있음)
고급 : 배열대신 자료구조에 나오는 Linked list를 사용하고, unsigned long형이 지원되는 숫자까지(32bit C, C++은 32bit까지, 64bit C, C++과 C#, Java는 64bit까지) 처리되도록 하며 프로그램에 주는 옵션에 따라 실행 결과를 옵션에 지정된 파일로 출력하게끔 작성하세요. 물론 중급 조건 모두를 만족해야 합니다.

순식간에 중학교 수준으로 난이도 상승! 하지만 잘 하실 수 있죠?
이번에도 역시 소스를 올리셔도 좋습니다. 다만~
비공개 처리 해 주세요 -_-+

신고
Trackback 1 Comment 4
  1. Favicon of http://dworld.tistory.com/ BlogIcon Deios 2007.03.15 18:13 신고 address edit & del reply

    흠흠... 저한테는 대학교 과정이군요 ^.^;;;
    전에도 말씀드렸다시피 프로그래밍이나 알고리즘이나...
    전혀 배운적이 없어서... 하하핫...
    20일날 외박나가는데... 외박 나가면 수학책(정수론)좀 찾아보고 풀어봐야 겠네요^^;;;
    근데 중급 조건에... 소수를 배열로 저장하라는 조건이 있는데...
    구해진 소수를 배열로 저장해서 비교할 수와 나누는건가요???
    하하핫...
    저한테는 너무 어렵네요 ^.^;;;

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.03.15 19:52 신고 address edit & del

      제가 중학교 수준이라고 한 이유는 단순합니다.
      중학교 교과서에 소수가 나오거든요 -_-;;;
      그리고 저 조건을 보고 그것을 유출해 내다니. 센스 있으시군요! 조금만 하시면 금방 실력이 늘으시겠습니다^^

  2. Favicon of http://dworld.tistory.com BlogIcon Deios 2007.03.16 19:05 신고 address edit & del reply

    그렇군요...
    그럼 중학교 수준 = 초급 이겠네요 ^.^;;;
    초급이야 뭐... 그냥 무한정 돌리면 되니깐...
    고급의 지정된 파일로 출력이라 함은 어떤걸 말씀하시는건가요???
    하하핫... ㅠ.ㅠ;;;

    다행히 부대안에 정수론 책이 있어서 찾아 봤는데...
    생각보다 힘드네요... 일단 세가지 정의를 이용해 볼까 합니다...
    N보다 작은 소수의 개수 구하는 정의랑...
    N이 소수인지 알아보려면 root(n)보다 작거나 같은 소수로 나눠보면 된다는 정의랑...
    한가지는 잘 기억이 나지 않는데...
    한 정의의 역이 거의항상 성립한다는 점을 이용한걸로 아는데...

    하핫... 앞으로도 많은 도움 주세요 ^.^;;;

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.03.17 00:00 신고 address edit & del

      프로그램을 실행시킬때 인수로 파일명을 주면 그 파일명을 가지는 파일을 만들고 거기에 자료를 넣는것입니다. -_-+

      그리고 제가 사용한 방법이 3가지 정의중 하나인것 같네요 ^^;

간단하고 쉬운 프로그래밍 문제 1 : 받은 수 만큼 더하기

지난번 초등학생도 풀만한 기초 문제 편에 이어서 역시 제가 고등학교때 풀었던 간단한 문제를 내보도록 하겠습니다~ ^^
2번째 시즌으로 넘어왔으니 난이도를 소폭 올려 보겠습니다. 준비 되셨나요?

문제
숫자 1개를 입력 받아 1에서부터 입력 받은 수까지의 모든 숫자를 더하는 프로그램을 작성하시오.

조건
초급 : 어떻게든 작성하시오 -_-;
중급 : 재귀함수를 사용하시오.
고급 : 1에서 부터 받은 수까지 일일이 더하는 방법보다 더 빠르고 효율적인 방법을 찾아 만드시오.(저는 1가지 방법 알고 있음)

참고로 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55 입니다.

이번부터는 댓글로 소스를 올리셔도 좋습니다. 다만!!
비공개로 올리세요 -_-;;

신고
Trackback 1 Comment 2
  1. Favicon of http://signpen.net BlogIcon 싸인펜 2007.03.11 01:57 신고 address edit & del reply

    재귀함수 방법까지는 감이 옵니다^^ㅋ

    고급 등급에서의 방법은 저도 한가지 방법이 대강 머릿속에 그려지는데, 실제로 한번 코드를 작성해 봐야 정리가 될것같네요.
    화현님, 저도 도전~!!

    • Favicon of http://www.myhyuny.net BlogIcon 화현 2007.03.11 11:07 신고 address edit & del

      저 문제가 재귀함수의 가장 기본적인 문제라 한번정도는 풀어 보셨을겁니다 ^^;
      고급같은 경우에는 알고보면 중급보다 쉽습니다. 단지 모르면 정말 어려운거죠 ㅎㅎ

[문제] 초등학생도 풀만한 기초 문제 – 9 : 다이아몬드 만들기

다음과 같은 결과값을 화면에 출력하는 프로그램을 작성하세요.

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

조건 1. 반복문 3개, 출력문 3개, 변수 2개, 별도의 함수 1개만을 사용할 것
조건 2. 최소한의 연산만으로 작동 시킬 것.

무려 여태까지 나온 모든 문제를 1개로 만든 문제!! 다이아 만들기 입니다! 삼각형 문제의 보스죠! 군대에 갔다 오신 분들이라면(혹은 서든이나 스포를 하신 분이라면) 저것이 왜 다이아인지 아실 것입니다.(소위 ㅎㅎ)
이번 문제 역시 조건은 전혀 변하지 않았습니다. 여태까지 나온 문제들을 열심히 푸신 분이라면 분명 잘 풀 수 있으실 거에요 ^^
그리고 다 푸신 분들은 입력 받은 만큼 삼각형의 크기가 변하게도 만들어보세요^^
그리고 이번에도 역시 소스 공개 금지!

예고] 다음은 5각 다이아입니다!! 라고 하고 싶지만 슬슬 지겹기도 해서 스킵!(위에 문제에서 약간 옆으로 늘리고 위에만 자르면 되니…) 그런고로~ 배열을 이용한 간단한 문제에 들어가겠습니다. 그러니 이젠 배열을 예습해두세요 ^^ 그리고 이제는 (아마도)절대 해설을 안 하겠습니다. 그리고 조건 역시 크게 바뀔 것입니다.(나중에 보시면 아실 것임) 그럼 다음에 봐요~~

덧] 5각 다이아 만들어 보고 싶으신 분은 싸인펜님의 JAVA를 이용한 For문 활용(다이아몬드, 하트 만들기) 편을 보고 만드세요~ 제 소스는 보지 마시고요~.

신고
Trackback 0 Comment 0

[해설] 초등학생도 풀만한 기초 문제 2 – 삼각형 변형 1 해설

저번의 예고대로 지난 문제들이 어렵다는 의견을 수렴해서 간단한 힌트를 드릴 겸 해설을 하도록 하겠어요.

우선 기본 삼각형을 거꾸로 만든

*****
****
***
**
*

이것!... 설마 못푼사람은 없겠죠?
하지만 못 푼 분들을 위해 간단히 설명해 드리겠습니다.

보통 for문을 쓸 때 0~4까지 이런 식으로 쓰지요?
하지만 4~0까지… 이런 식으로 쓴다는 생각을 잘 못하시더라고요 -_-;;;;
넵, for문은 꼭 작은 수에서만이 아니고 큰 수에서 줄어들게끔 도 쓸 수 있으며, C문법을 따르는 언어 같은 경우에는 값이 아닌 전혀 다른 것이 들어갈 수 있습니다

- C 문법을 따르는 언어의 경우 –

for(변수 초기화; 조건문; 증가연산)
{
 실행될 문장들
}


 

- Basic 문법을 따르는 언어의 경우 –

For 변수 = 시작숫자 To 끝숫자
 실행될 문장들
Next


이런 식으로 외우는 분들이 참 많습니다. 어느 정도 틀린 말은 아니지만 정확하지는 않죠.
하지만 좀더 정확히 표현을 하면

- C 문법을 따르는 언어의 경우 –

for(반복문 실행 이전에 실행할 문장; 조건문; 조건문을 검사하기 전 실행할 문장)
{
 실행될 문장들;
}


 

- Basic 문법을 따르는 언어의 경우 –

For 변수 = 시작숫자 To 끝숫자 Step 증가, 혹은 감소할 수치
 실행될 문장들
Next 변수

우선 베이직의 경우에는 뒤에 Step문이 있는지 모르는 초보자들이 많습니다. 이 옵션에 따라 증가할 수도, 감소할 수도 있지만 보통 생략형으로 사용하다 보니 잊혀지기 쉽죠.
다음 C같은 경우에는 저게 무슨 말인가~ 싶으실 분들이 꽤 될 것입니다. 하지만 저것을 while문으로 풀어보면 조금은 이해가 쉽죠 (비교하면서 보세요)

- for 문을 while문으로 바꿀 시 –

반복문 실행 이전에 실행할 문장;
while(조건문)
{
 ~
 실행 문장들;
 ~
 조건문을 검사하기 전에 실행할 문장;
}

이런 식으로 표현됩니다. 그래서
for(printf("당신은 사랑 받기"); !printf(" 위해 태어난 사람"); printf("일까나... 까나..."));
이런 식으로 실행해도 아무 문제 없게 되는 것입니다 -_-;;;

조금 많이 이야기가 샜는데
결국 이전에 제가 해설했던 그 문제를 0~4까지가 아닌, 4~0까지 돌리면 해결이 됩니다 ^^
어때요 참 쉽죠?(니가 로스씨냐?)

예고] 다음 시간에는 삼각형 변형 2, 3번 문제를 해설해드릴게요. 그럼 바이~.

신고
Trackback 0 Comment 0

[문제] 초등학생도 풀만한 기초 문제 – 8 : 이등변 삼각형 4

다음과 같은 결과값을 화면에 출력하는 프로그램을 작성하세요.

    *
   **
  ***
 ****
*****
 ****
  ***
   **
    *

조건 1. 반복문 3개, 출력문 3개, 변수 3개 이하, 별도의 함수 1개만을 사용할 것
조건 2. 최소한의 연산만으로 작동 시킬 것.

반대로 만들어 봤어요, 어렵지 않죠? 어렵더라도 잘 생각해 보고 열심히 풀어보세요.
소스코드 올리지 말고요~ ^^

예고] 다음 시간에는 지난 문제들이 어렵다는 의견이 종종 나와서 간단한 해설을 해 드리겠어요. 아주 자세하게는 아니지만 그래도 꽤 도움이 될 거에요 ^^ 그럼 다음에 만나요~~.

신고
Trackback 0 Comment 0