try-cat.ch 4

삼각형의 종류를 판별하라 삼각형의 세변의 길이가 주어질때 직각삼각형인지, 예각삼각형인지, 둔각 삼각형인지를 판별하시오 --------------------------------------------------------------------- package trycatch; import java.util.Scanner; public class no4 { public static void main(String [] args){ Scanner sc=new Scanner(System.in); System.out.print("숫자 3개를 입력하시오 : "); int fst=sc.nextInt(); int snd=sc.nextInt(); int lst=sc.nextInt(); String result=Trian(frs,scd,lst); System.out.println(result); } static String Trian(int a,int b,int c){ int sum=(int)Math.pow(a,2)+(int)Math.pow(b,2); if(sum==Math.pow(c,2))return "직각"; else if(sum>Math.pow(c,2))return "예각"; else return"둔각"; } } ------------------------------------------------------------------------------- 이렇게 풀었으나 정답은 입력값으로 하는 것을 원한게 아니라 그냥 고정값을 원했다. 이게 더 어려워 보여서 그냥 이걸로 올릴란다.

#2 <칼의 노래>를 읽으며..

이미지
책 정보 저자 : 김훈 출판사 : 생각의 나무 "버려진 섬마다 꽃이 피었다." 칼의 노래의 첫 마디이다. 전쟁 중 피난 간 백성들이 버린 섬에 시간이 지나 꽃은 여전히 피어있다는 것 같다. 문장 하나가 책 한 권을 함축하고 있다. 저번에 읽은 담론과 비슷하게 문장 하나하나가 아름답고 단순하다. 임금 선조의 여린 마음씨와 무능한 조정 그리고 그 사이에서 왜군과 힘들게 싸우고 있는 이순신 장군의 위대함을 알 수 있는 책이었다. 책을 읽으며 궁금해서 책에 대해 네이버에 쳐봤는데 이순신 장군의 업적이나 영국 발라드 제독이 이순신 장군과 영국의 영웅 넬슨 제독과 견주어 평가했고 일본 도고 제독 또한 이순신 장군에 비하면 자신은 부사관도 못했을 것이다라는 평가를 보고 위대함을 느꼈다. 마지막으로 감명 받았던 부분을 적어야겠다. 이순신 장군의 부하 송여종이 적군과 싸우고 돌아와서 포로로 잡혀온 적군을 자신이 모두 죽이고 싶다고 이순신의 허락을 맡는 부분이다. 하지만 포로는 왜군에게 포로로 잡혀간 조선 백성이었다. 송여종이 자신의 부하를 죽인 조선 백성을 죽이겠다고 하자 베어져야 할 자는 너다라는 말을 한다. 또한 이순신 장군 자신 또한 베어져야한다고 한다. 백성을 온전히 지켰더라면 , 어찌 백성이 너에게 총을 쏘았겠느냐고 하자 송여종은 외면하고 다음 날 포로를 죽이지 않았다. 멋있는 리더십이다. 적고 싶은 것들이 많지만 이 정도로만 해야겠다.

프로젝트 오일러 31

영국의 화폐 단위는 파운드(£)와 펜스(p)이고, 동전의 종류는 아래와 같습니다. 1p, 2p, 5p, 10p, 20p, 50p, £1 (100p), £2 (200p) 이 동전들을 가지고 2파운드를 만드는 방법은 다양할 것입니다. 예를 하나 들면 이렇습니다. 1×£1 + 1×50p + 2×20p + 1×5p + 1×2p + 3×1p 2파운드를 만드는 서로 다른 방법은 모두 몇가지나 있습니까? ------------------------------------------------------------- target = 200 coins = [1, 2, 5, 10, 20, 50, 100, 200] ways = [1] + [0]*target for coin in coins:     for i in range(coin, target+1):         ways[i] += ways[i-coin] print ways[-1] ----------------------------------------------------------------- 이런 알고리즘 사용하는 게 아직 쉽지 않다.. 나는 for문 여러개 만들어서 했지만 답은 dp 알고리즘이 더 간단하다. 아직 읽지 못한 알고리즘 책을 읽어야겠다..

프로젝트 오일러 30

각 자리의 숫자를 4제곱해서 더했을 때 자기 자신이 되는 수는 놀랍게도 단 세 개밖에 없습니다. 1634 = 1 4  + 6 4  + 3 4  + 4 4 8208 = 8 4  + 2 4  + 0 4  + 8 4 9474 = 9 4  + 4 4  + 7 4  + 4 4 (1 = 1 4 의 경우는 엄밀히 말해 합이 아니므로 제외합니다) 위의 세 숫자를 모두 더하면 1634 + 8208 + 9474 = 19316 입니다. 그렇다면, 각 자리 숫자를 5제곱해서 더했을 때 자기 자신이 되는 수들의 합은 얼마입니까? ------------------------------------------------------------------------------------- res=0 ans=0 num=2 while True:     strNum=str(num)     for i in range(0,(len(strNum))):         res+=pow(int(strNum[i]),5)     if(res==num):         ans+=num     num+=1     res=0     if(num==200000):break print ans ---------------------------------------------------------------------------------------- 반복문 종료조건을 정확히 했어야 했는데 수학적으로 접근하기 힘들어서 그냥 무한루프 돌리고 마지막 값 종료 조건으로 해서 풀었다. 뭔가 맞히고도 찜찜하다...

try-cat.ch 3

해당하는 모든 소수를 출력하라 소수란 1과 자기 자신만을 약수로 가지는 수이다. 100이하의 자연수 중 모든 소수를 출력하시오. 소수를 오름차순으로 출력한다. 각 출력값 사이는 공백으로 구분하고, 출력값 5개 마다 줄바꿈을 한다. ------------------------------------------------------------------- public class Main { public static void main(String[] args) { int count=0,count1=1;         int i,j;         System.out.print(2+" ");         for(i=3;i             for(j=2;j                 if(i%j==0)break;                 else count++;             }             if(count1==4 && count==i-2){             System.out.println(i+" ");             count1=0;                 continue;             }     ...

프로젝트 오일러 29

2 ≤  a  ≤ 5 이고 2 ≤  b  ≤ 5인 두 정수  a ,  b 로 만들 수 있는  a b 의 모든 조합을 구하면 다음과 같습니다. 2 2 =4,  2 3 =8,  2 4 =16,  2 5 =32 3 2 =9,  3 3 =27,  3 4 =81,  3 5 =243 4 2 =16,  4 3 =64,  4 4 =256,  4 5 =1024 5 2 =25,  5 3 =125,  5 4 =625,  5 5 =3125 여기서 중복된 것을 빼고 크기 순으로 나열하면 아래와 같은 15개의 숫자가 됩니다. 4,  8,  9,  16,  25,  27,  32,  64,  81,  125,  243,  256,  625,  1024,  3125 그러면, 2 ≤  a  ≤ 100 이고 2 ≤  b  ≤ 100인  a ,  b 를 가지고 만들 수 있는  a b 는 중복을 제외하면 모두 몇 개입니까? ---------------------------------------------------------- result=list() for i in range(2,101):     for j in range(2,101):         result.append(pow(i,j)) result=list(set(result)) n=len(result) print n ------------------------------------------------------------- 문제가 점점 가면 갈수록 쉬워지고 코드가 짧아지니 ...

try-cat.ch 2

주어진 숫자를 한글로 읽어보자 숫자단위에 아직 미숙한 어린 아이들을 대상으로 숫자가 한글로 출력되는 프로그램을 만들고자 한다. --------------------------------------------------------------------------------------------------- package trycatch; import java.util.Scanner; public class no2 { public static void main(String[] args){ Scanner scan=new Scanner(System.in); int i,plc=0,result; String numString=null; int num=scan.nextInt(); String[] han={"일","이","삼","사","오","육","칠","팔","구"}; String[] han1={" ","십","백","천","만","십만","백만","천만","억",}; no2 myNo2=new no2(); int findNum=myNo2.find(num)-1; for(i=findNum;i>=0;i--){ plc=(int) (num%Math.pow(10,i)); plc=num-plc; result=(int)(plc/Math.pow(10,i)); result=result%10; switch(result) { case 1 : numString="일"; break; case 2 : numString="...