일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Hibernate
- namedQuery
- JPA
- paging
- 자바서블릿
- springflow
- jQuery값전송
- 페이징
- 대량쿼리
- javascriptcalendar
- 스프링데이터흐름
- 제네릭
- JPQL
- jQueryUI
- 페치조인
- jQuery값전달
- JQuery
- Generic
- fullcalendar
- jscalendar
- 제너릭
- 프로젝트생성
- calendar
- javaservlet
- values()
- 엔티티직접사용
- LIST
- 벌크연산
- fetchjoin
- joinfetch
- Today
- Total
가자공부하러!
알고리즘(8) - 실무응용2 본문
목차
> 다음 자료를 입력받은 후 출력 형식에 맞게 출력하는 코드를 작성.
> 자료 :
영업 |
강현준 |
1000 |
100 |
영업 |
조충희 |
1300 |
140 |
총무 |
이다인 |
1200 |
150 |
총무 |
강호정 |
1500 |
230 |
> 출력 형식 :
사원 급여표 |
||||
부서 |
성명 |
본봉 |
수당 |
합계 |
영업 |
xxx |
xxx |
xxx |
xxx |
영업 |
xxx |
xxx |
xxx |
xxx |
부서합계 : |
xxx |
|||
총무 |
xxx |
xxx |
xxx |
xxx |
총무 |
xxx |
xxx |
xxx |
xxx |
부서합계 : |
xxx |
|||
전체합계 : |
xxx |
내 코드(java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | package Test.java; import java.util.*; import java.io.*; import java.lang.*; public class TestMain { public static void main(String[] args) { member mb = new member(); int prvSlr=0,dptSlr=0,ovrSlr=0; //합계 저장 변수 선언 String dptChc=" "; //부서 체크 변수 선언 try{ Scanner inf=new Scanner(new FileReader("D:\\java_data1.txt")); //데이터 파일 불러오기 FileWriter ouf = new FileWriter("D:\\java_result.txt"); //결과파일 저장 ouf.write(String.format("\t\t\t사원 급여표\r\n")); //결과파일 헤더 출력 ouf.write(String.format("부서\t성명\t본봉\t수당\t합계\r\n")); mb.dpt=inf.next(); mb.name=inf.next(); mb.slr=Integer.parseInt(inf.next()); mb.addSlr=Integer.parseInt(inf.next()); while(inf.hasNext()) { dptChc=mb.dpt; //부서 체크 변수 수정 dptSlr=0; //부서 급여 합계 초기화 do { prvSlr=mb.slr+mb.addSlr; //개인 급여 합계 dptSlr+=prvSlr; //부서 급여 합계 누적 ouf.write(String.format("%s \t %s \t %d \t %d \t %d \r\n", mb.dpt,mb.name,mb.slr,mb.addSlr,prvSlr)); if(!inf.hasNext()) { ovrSlr+=dptSlr; ouf.write(String.format("부서 합계 : %d\r\n", dptSlr)); ouf.write(String.format("전체 합계 : %d", ovrSlr)); inf.close(); ouf.close(); System.exit(0); } mb.dpt=inf.next(); mb.name=inf.next(); mb.slr=Integer.parseInt(inf.next()); mb.addSlr=Integer.parseInt(inf.next()); }while(dptChc.equals(mb.dpt)); ovrSlr+=dptSlr; ouf.write(String.format("부서 합계 : %d\r\n", dptSlr)); } }catch (FileNotFoundException e) { // TODO: handle exception }catch(IOException e){ System.out.println(e); } } } class member{ //멤버 클래스 String dpt=" ",name=" "; int slr=0, addSlr=0; } | cs |
*틀렸던 부분 :
> IO부분 다 까먹어서 IO 없이 하려다 로직이 안나와서 거의 보고 베낌...ㅠㅠㅠㅠ
> 실패코드 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | package Test.java; import java.util.*; import java.math.*; import java.io.*; import java.lang.*; public class TestMain { public static void main(String[] args) { Scanner in = new Scanner(System.in);//스캐너 객체 선언 function1 f = new function1(); //기초자료 저장을 위한 객체 선언 member[] mmb = new member[4]; //사원 4명의 객체를 저장할 객체 배열 선언 mmb=f.saveData(); //객체 배열에 기초자료 저장 for(int i=0; i<mmb.length;i++) System.out.println(mmb[i].dpt+" "+mmb[i].name+" "+mmb[i].slr+" "+mmb[i].addSlr); System.out.printf("\t\t\t사원 급여표\n"); System.out.printf("부서\t성명\t본봉\t수당\t합계\n"); } } class member{ //멤버 클래스 String dpt=" ",name=" "; int slr=0, addSlr=0; void printMemberData() { System.out.print(dpt+" "+name+" "+slr+" "+addSlr); } } class function1{ //기초자료 저장 member[] saveData() { member[] mmb = new member[4]; for(int i=0; i<4; i++) mmb[i]=new member(); mmb[0].dpt="영업"; mmb[0].name="강현준"; mmb[0].slr=1000; mmb[0].addSlr=100; mmb[1].dpt="영업"; mmb[1].name="조충희"; mmb[1].slr=1300; mmb[1].addSlr=140; mmb[2].dpt="총무"; mmb[2].name="이다인"; mmb[2].slr=1200; mmb[2].addSlr=150; mmb[3].dpt="총무"; mmb[3].name="강호정"; mmb[3].slr=1500; mmb[3].addSlr=230; return mmb; } } | cs |
교재 코드(C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> struct member { char bu[5], irum[10]; int bon, su; }; main() { FILE *inf, *ouf; inf = fopen("data2.txt", "r"); ouf = fopen("result2.txt", "w"); struct member data; int gtot, butot, keb; char bubi[5]; gtot = 0; fprintf(ouf, " \t \t사원 급여표\n"); fprintf(ouf, "부서\t성명\t본봉\t수당\t합계\n"); fscanf(inf, "%s %s %d %d", data.bu, data.irum, &data.bon, &data.su); while (1) { butot = 0; strcpy(bubi, data.bu); do { keb = data.bon + data.su; butot += keb; fprintf(ouf, "%s \t%s \t%d \t%d \t%d \n", data.bu, data.irum, data.bon, data.su, keb); if (fscanf(inf, "%s %s %d %d", data.bu, data.irum, &data.bon, &data.su) == EOF) { gtot += butot; fprintf(ouf, "부서 합계 : %d \n", butot); fprintf(ouf, "전체 합계 : %d", gtot); fclose(ouf); fclose(inf); exit(0); } } while (strcmp(bubi, data.bu) == 0); gtot += butot; fprintf(ouf, "부서 합계 : %d \n", butot); } } | cs |
데이터파일 8_1_java_data.txt
출력파일 8_1_java_result.txt
> 다음의 처리 조건에 따라 동별, 나이별 통계를 구하는 코드를 작성.
> 동은 1~10까지 10개의 동이 있다.
> 동 코드로 0이 입력되면 종료한다.
> [색칠된 부분]은 제외하고 본문의 값들만 출력한다.
> 입력 형식
동 코드 |
성명 |
나이 |
DONG |
IRUM |
NAI |
> 출력 형식
동 |
0~9 |
10~19 |
20~29 |
30~39 |
40~49 |
50~59 |
60 이상 |
합계 |
1 |
||||||||
2 |
||||||||
3 |
||||||||
4 |
||||||||
합계 |
내 코드(java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | package Test.java; import java.util.*; import java.io.*; public class TestMain { public static void main(String[] args) { List<Member> mList = new ArrayList<>(); Scanner in = new Scanner(System.in); int i=1, add=1,age=1; String name=" "; do { //입력부(동 입력 시 0을 입력하면 입력 종료) System.out.print("동 입력 : "); add=in.nextInt(); if(add==0) { System.out.println("입력 종료."); break; } System.out.print("이름 입력 : "); name=in.next(); System.out.print("나이 입력 : "); age=in.nextInt(); mList.add(new Member(add,name,age)); }while(i==1); try { FileWriter ouf = new FileWriter("D:\\8_2_java_result.txt"); int[][] tbl=new int[11][8]; //출력 될 숫자배열 생성 for(int j=0; j<mList.size();j++) { //저장부 if(mList.get(j).age > 59) //나이가 60 이상이면 60으로 수정 mList.get(j).setAge(60); tbl[mList.get(j).add-1][(mList.get(j).age/10)]++;//해당 동-연령대 위치에 값 +1 tbl[mList.get(j).add-1][7]++; tbl[10][(mList.get(j).age/10)]++; } for(int j=0; j<11;j++) { //출력부 for(int k=0; k<8;k++) { ouf.write(tbl[j][k]+" "); } ouf.write("\r\n"); System.out.println(i); } ouf.close(); } catch(FileNotFoundException e){ //TODO: handle exception } catch(IOException e) { System.out.println(e); } } } class Member { //멤버 클래스 String name=""; int age=0,add=1; public Member(int a, String b, int c) { //생성자 this.add=a; this.name=b; this.age=c; } public int getAge() { return age; } public void setAge(int aa) { age=aa; } } | cs |
*틀렸던 부분 :
> 29번 줄 FileWriter 선언, 객체생성 방법 까먹음
> 44번 줄 줄바꿈 문자 오류 (\n -> \r\n)
> 47번 줄 close메소드 빼먹음
교재 코드(C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> struct member { int dong, nai; char irum[10]; }; main() { FILE *ouf; ouf = fopen("result3.txt", "w"); struct member data; int a[11][8], i, j, row, col; for (i = 0; i <= 10; i++) for (j = 0; j <= 7; j++) a[i][j] = 0; printf("동 이름 나이를 입력하세요. \n모두 입력하셨으면 '0 0 0'을 입력하세요\n"); while (1) { scanf("%d %s %d", &data.dong, data.irum, &data.nai); if (data.dong == 0) break; if (data.nai >= 60) data.nai = 60; row = data.dong - 1; col = data.nai / 10; a[row][col] += 1; a[row][7] += 1; a[10][col] += 1; a[10][7] += 1; } for (i = 0; i <= 10; i++) { for (j = 0; j <= 7; j++) fprintf(ouf, " %d", a[i][j]); fprintf(ouf, " \n"); } fclose(ouf); } | cs |
출력파일 : 8_2_java_result.txt
> 자료를 입력받은 후 출력 형식에 맞게 출력하는 순서도 작성
> 출력 형식 :
반 |
번호 |
체중 |
1반 |
xx |
xx |
xx |
xx |
|
xx |
xx |
|
3반 |
xx |
xx |
xx |
xx |
|
xx |
xx |
|
4반 |
xx |
xx |
xx |
xx |
|
최소 체중 : |
xx |
|
최대 체중 : |
xx |
내 코드(java)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | package Test.java; import java.util.*; import java.io.*; public class TestMain { public static void main(String[] args) { int maxWgh=0,minWgh=100,classNum=1; int stdClsNum=0,stdNum=0,stdWgh=0; try { Scanner inf = new Scanner(new FileReader("d:\\8_3_java_data.txt")); FileWriter ouf = new FileWriter("d:\\8_3_java_result.txt"); ouf.write("반\t번호\t체중\r\n1반"); while(inf.hasNext()) { stdClsNum=inf.nextInt(); stdNum=inf.nextInt(); stdWgh=inf.nextInt(); if(stdWgh>maxWgh) maxWgh=stdWgh; if(stdWgh<minWgh) minWgh=stdWgh; if(classNum != stdClsNum) { ouf.write(stdClsNum+"반\t"+stdNum+"\t"+stdWgh+"\r\n"); classNum = stdClsNum; }else ouf.write("\t"+stdNum+"\t"+stdWgh+"\r\n"); } ouf.write("최소 체중 : "+minWgh+"\r\n"+"최대 체중 : "+maxWgh+"\r\n"); System.out.println("끝!"); ouf.close(); inf.close(); } catch(FileNotFoundException e){ //TODO: handle exception } catch(IOException e) { System.out.println(e); } } } | cs |
*틀렸던 부분 :
> 27번 else를 빼먹어서 출력이 중복됨
> \t 간격을 잘 못맞춰서 엇나감 -> 맞게 수정
교재 코드(C)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <string.h> struct member { char ban[4]; int bunho, wgt; }; main() { struct member data[100]; int flag, a, b, i, k; char c[4]; printf("반 번호 무게를 입력하세요. \n모두 입력하셨으면 '0 0 0'을 입력하세요\n"); flag = 0; i = k = -1; do { k++; scanf("%s %d %d", data[k].ban, &data[k].bunho, &data[k].wgt); } while (data[k].bunho != 0); printf("반\t번호\t체중\n"); while (i < k - 1) { i++; if (flag == 0) { flag = 1; a = data[i].wgt; b = data[i].wgt; } else if (a > data[i].wgt) a = data[i].wgt; else if (b < data[i].wgt) b = data[i].wgt; if (strcmp(c, data[i].ban) == 0) { printf(" \t%d \t%d \n", data[i].bunho, data[i].wgt); continue; } strcpy(c, data[i].ban); printf("%s \t%d \t%d \n", data[i].ban, data[i].bunho, data[i].wgt); } printf("최소 체중:%d \n", a); printf("최대 체중:%d", b); } | cs |
데이터 파일 : 8_3_java_data.txt
출력 파일 : 8_3_java_result.txt
> 3000원을 가지고 한 개에 200원, 300원, 400원인 사과를 각각 10개 이내에서 적절하게 조합하여 살 수 있는 코드를 작성.
> 단, 200원, 300원, 400원 짜리 사과를 각각 1개이상 사야하며, 전체 금액은 3000원이어야 한다.
내 코드(java)
*틀렸던 부분 :
>
교재 코드(C)
>
내 코드(java)
*틀렸던 부분 :
>
교재 코드(C)
'공부 > 정보처리기사(실기)' 카테고리의 다른 글
데이터베이스(2) - 관계형 데이터베이스와 관계 연산 (0) | 2019.05.25 |
---|---|
데이터베이스(1) - 데이터베이스 기본 (0) | 2019.05.25 |
알고리즘(7) - 배열응용2, 실무응용 (0) | 2019.04.02 |
알고리즘(6) - 배열응용 (0) | 2019.04.02 |
알고리즘(5) - 병합, 스택, 배열 (0) | 2019.04.02 |