Q1) 일한 시간을 입력 받아 총 임금을 계산하는 시급 계산기 입니다. 시급은 5000원이며 8시간보다 초과 근무한 시간에 대해 1.5배의 시급이 책정됩니다.
package 조건문반복문;
import java.util.Scanner;
public class Ex01 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("일한 시간을 입력하세요 : ");
int wh = sc.nextInt();
int pay = 0; //총 임금
if(wh>=8) {
//8시간은 무조건 5000원
//일한 시간이 8시간이 넘으면 8시간에 대해서는 무조건 5000이기 때문에 40000 원에서
//초과 근무 시간에 대한 임금만 연산하여 더해줌!
//1.5 (실수)가 연산되기 때문에 결과값이 실수가 되지 않도록(돈은 실수로 표현하지 않음)
//정수형으로 형변환 (double->int) 이기 때문에 강제 형변환!
pay = 40000 + (int)(5000*1.5*(wh-8));
}else {
pay = wh * 5000;
}
System.out.println("총 임금은 "+pay+"원 입니다.");
}
}
Q2) 1-2+3-4+...+99-100 를 계산하여 답을 출력하시오.
package 조건문반복문;
public class Ex02 {
public static void main(String[] args) {
int sum = 0; //합계 저장 변수
for(int i=1; i<=100; i++) { //i가 1~100까지 수 가짐
if(i%2==1) {//i가 홀수인 경우
System.out.print(i+" "); //숫자 그대로 출력
sum+=i; //sum변수에 누적합
}else {
System.out.print(-i+" "); //숫자 앞에 -기호 붙여서 출력
sum-=i; //sum변수에 누적차
}
}
System.out.println();
System.out.println("결과 : "+sum);
}
}
Q3) 거스름돈을 입력 받아 내어줘야 하는 지폐의 개수를 출력하는 프로그램을 작성하시오.
단, 최대단위는 1000원. 최소단위는 100원
package 조건문반복문;
import java.util.Scanner;
public class Ex03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("총금액 입력 : ");
int money = sc.nextInt();
System.out.println("10000원 : "+ (money/10000));
System.out.println("5000원 : "+ (money%10000/5000));
System.out.println("1000원 : "+ (money%5000/1000));
System.out.println("500원 : "+ (money%1000/500));
System.out.println("100원 : "+ (money%500/100));
}
}
Q4) 행 개수를 입력 받아 다음 과 같이 삼각형을 출력하시오
package 조건문반복문;
import java.util.Scanner;
public class Ex04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("행 개수 : ");
int num = sc.nextInt();
for(int i=1; i<=num; i++) { //입력한 수 만큼 줄 출력
for(int j=1; j<=i; j++) { //각 줄 별의 개수 (줄 번호 만큼 별 개수 출력)
System.out.print("*");
}
System.out.println(); //한 줄 출력 후 개행
}
}
}
Q5) 정수를 입력받아 1의 자리에서 반올림 한 결과를 출력하시오.
package 조건문반복문;
import java.util.Scanner;
public class Ex05 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("숫자 입력 : ");
int num = sc.nextInt();
System.out.print("반올림 수 : ");
//방법1
//1의자리수가 0~4 인지 5~9 인지 파악
if(num%10>=0 && num%10<=4) {
System.out.println(num/10*10);
}else {
System.out.println((num/10+1)*10);
}
//방법2
//반올림 공식 사용
System.out.println((num + 5)/10 * 10);
}
}
Q6) for 문을 사용하여 A~Z까지 출력하시오.
package 조건문반복문;
public class Ex06 {
public static void main(String[] args) {
//아스키 코드 활용 정수 -> char 형으로 형변환
for(int i=65 ; i<=90; i++) {
System.out.println((char)i);
}
for(char i='A' ; i<='Z'; i++) {
System.out.println(i);
}
}
}
Q7)정수n을 입력받아 1,2,4,7,11 과 같은 수열의 n번째 항까지 출력하시오.
package 조건문반복문;
import java.util.Scanner;
public class Ex07 {
public static void main(String[] args) {
//1 2 4 7 11
//출력 되는 숫자가 +1 +2 +3 .. 순으로 증가된 숫자가 출력됨
Scanner sc = new Scanner(System.in);
System.out.print("n 입력 : ");
int num = sc.nextInt();
int print = 1; //출력될 숫자
for(int i=1; i<=num; i++) { //i 가 1~n 까지 증가(+1 +2 +3 ... 증가용으로 사용)
System.out.print(print+" ");
print+=i; //출력될 숫자에 i를 누적하면서 +1 +2 +3 .. 순으로 증가하도록 함
}
}
}
Q8) 8자리 정수를 입력받아 반복문을 활용하여 입력받은 정수의 합을 구하여 출력하는 프로그램을 작성하시오.
package 조건문반복문;
import java.util.Scanner;
public class Ex08 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("정수 입력 : ");
int num = sc.nextInt();
int sum = 0; //합계 저장 변수
while(num>0) {//모든 수를 다 더하고 하면 num/=10 의 결과가 0이 나오게 됨/ 그 전까지만 반복
sum+= num%10; //1의자리 수만 계속 누적합
num/=10; //이미 더해진 1의자리 수는 제외하기 위해 10으로 나누었을 때 몫만 다시 num에 저장
}
System.out.println(sum);
}
}
Q9)
그림과 같이('_')문자로 구성된 형태의 숫자를 주어진 숫자와 같이 출력하고 싶을 때 사용되게 되는 대시의 개수를 출력하는 프로그램을 작성하라
package 조건문반복문;
import java.util.Scanner;
public class Ex09 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("첫자리 0을 제외한 숫자를 입력해주세요 : ");
int num = sc.nextInt();
int sum = 0; //대시 수 합계 저장 변수
while(num>0) {//모든 대시 수를 다 더하고 하면 num/=10 의 결과가 0이 나오게 됨/ 그 전까지만 반복
//1의자리 수 대시 수 구하여 sum에 누적
if(num%10==0) {
sum += 6;
}else if(num%10==1) {
sum += 2;
}else if(num%10==2) {
sum += 5;
}else if(num%10==3) {
sum += 5;
}else if(num%10==4) {
sum += 4;
}else if(num%10==5) {
sum += 5;
}else if(num%10==6) {
sum += 6;
}else if(num%10==7) {
sum += 3;
}else if(num%10==8) {
sum += 7;
}else if(num%10==9) {
sum += 6;
}
num/=10; //이미 더해진 1의자리 수는 제외하기 위해 10으로 나누었을 때 몫만 다시 num에 저장
}
System.out.println(sum);
}
}
Q10) 1보다 큰 정수(N)를 입력하여 N!값을 구하시오.
* 팩토리얼이란 N의 수보다 작거나 같은 모든 양의 정수의 곱
ex)3! = 1*2*3 ->6
package 조건문반복문;
import java.util.Scanner;
public class Ex10 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("입력 : ");
int input = sc.nextInt();
int mul = 1; //누적곱 저장 변수 (곱이므로 초기값은 1!)
for(int i =1; i<= input; i++) { //1부터 입력수 까지 1씩 증가
mul*=i; //mul 에 i를 누적 곱해줌
}
System.out.println("출력 : "+ mul);
}
}
Q11) 문자열 형태의 2진수를 입력받아 10진수로 바꾸는 프로그램을 작성하시오.
String str = "01001101";
String str ="00101000"
package 조건문반복문;
public class Ex11 {
public static void main(String[] args) {
String str = "01001101";
int num = 0; //숫자 하나하나를 담을 변수
int sum = 0; //2진수 연산 결과 누적 담을 변수
for(int i=1; i<=str.length(); i++) { //문자열의 숫자 개수 만큼 반복
//1의 자리 부터 숫자 하나하나 구하기위해 문자열 자름
//숫자연산을 해야하므로 자른 문자열은 정수형으로 변환
//레퍼런스 자료형 -> 기본자료형 이므로 기능 사용해야함
num = Integer.parseInt(str.substring(str.length()-i,str.length()-i+1));
if(num==1) { //숫자가 1일 경우에만
for(int j=1; j<i; j++) {
num*=2; //1의자리 -> 0번 2의자리 -> 1번 ... 씩 2가 곱해지도록 반복문 작성
}
}
sum+=num; //구한 각 자리 수 sum 에 누적 합
}
System.out.printf("%s(2) = %d(10)",str,sum);
}
}
Q12) 스마트미디어인재개발원의 인쌤이 Java 시험문제를 채점하고 있다. 문제마다 'o' 또는 'x'로 표시가 되어 있는데 점수를 매기는 방식이 특이하다. 'o' 또는 'x'로 표시가 되어 있는데 점수를 매기는 방식이 특이하다. 'o'는 점수가 누적되는 방식으로 채점되는데 이전부터 자신을 포함한 연속된 'o'의 개수 만큼의 점수로 채점이 됩니다. 예를; 들어 'oooxoo'라는 표시가 있다면 순서대로 1+2+3+0+1+2=9 으로 총점이 계산됩니다 .학생이 푼 시험지에 정답, 오답 여부가 표시되어 있을 때 총점을 구하는 프로그램을 작성하세요
package 조건문반복문;
import java.util.Scanner;
public class Ex12 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("===채점하기===");
String answer = sc.next();
int sum = 0; //총 점수 담을 변수
int score = 1; //각 문제 점수 담을 변수
for(int i=1; i<=answer.length(); i++) { //문자열의 ox 개수 만큼 반복
if(answer.substring(i-1, i).equals("o")) { //o 일 경우
sum+=score; //총점에 문제 점수 누적
score++; //문제 점수 1증가
}else {
score = 1; //문제 점수 초기화(1)
}
}
System.out.print(sum);
}
}
Q13) 입력된 문장에 포함된 알파벳의 빈도를 대소문자 구별없이 구하는 프로그램을 작성하시오.
package 조건문반복문;
import java.util.Scanner;
public class Ex13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("==== 알파벳 빈도수 구하기 ====");
String input = sc.nextLine();
//방법1. 모든 알파벳 별로 카운트할 변수 선언 후 출력
//코드가 길지만 단순하고 연산도 단순함
//-> 후에 배울 배열을 활용하면 이 코드도 단순해질수 있음!
int a=0,b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0,y=0,z =0;
for(int cnt=0; cnt<input.length(); cnt++) {
if(input.charAt(cnt)=='a'||input.charAt(cnt)=='A') {
a++;
}else if(input.charAt(cnt)=='b'||input.charAt(cnt)=='B') {
b++;
}else if(input.charAt(cnt)=='c'||input.charAt(cnt)=='C') {
c++;
}else if(input.charAt(cnt)=='d'||input.charAt(cnt)=='D') {
d++;
}else if(input.charAt(cnt)=='e'||input.charAt(cnt)=='E') {
e++;
}else if(input.charAt(cnt)=='f'||input.charAt(cnt)=='F') {
f++;
}else if(input.charAt(cnt)=='g'||input.charAt(cnt)=='G') {
g++;
}else if(input.charAt(cnt)=='h'||input.charAt(cnt)=='H') {
h++;
}else if(input.charAt(cnt)=='i'||input.charAt(cnt)=='I') {
i++;
}else if(input.charAt(cnt)=='j'||input.charAt(cnt)=='J') {
j++;
}else if(input.charAt(cnt)=='k'||input.charAt(cnt)=='K') {
k++;
}else if(input.charAt(cnt)=='l'||input.charAt(cnt)=='L') {
l++;
}else if(input.charAt(cnt)=='m'||input.charAt(cnt)=='M') {
m++;
}else if(input.charAt(cnt)=='n'||input.charAt(cnt)=='N') {
n++;
}else if(input.charAt(cnt)=='o'||input.charAt(cnt)=='O') {
o++;
}else if(input.charAt(cnt)=='p'||input.charAt(cnt)=='P') {
p++;
}else if(input.charAt(cnt)=='q'||input.charAt(cnt)=='Q') {
q++;
}else if(input.charAt(cnt)=='r'||input.charAt(cnt)=='R') {
r++;
}else if(input.charAt(cnt)=='s'||input.charAt(cnt)=='S') {
s++;
}else if(input.charAt(cnt)=='t'||input.charAt(cnt)=='T') {
t++;
}else if(input.charAt(cnt)=='u'||input.charAt(cnt)=='U') {
u++;
}else if(input.charAt(cnt)=='v'||input.charAt(cnt)=='V') {
v++;
}else if(input.charAt(cnt)=='w'||input.charAt(cnt)=='W') {
w++;
}else if(input.charAt(cnt)=='x'||input.charAt(cnt)=='X') {
x++;
}else if(input.charAt(cnt)=='y'||input.charAt(cnt)=='Y') {
y++;
}else if(input.charAt(cnt)=='z'||input.charAt(cnt)=='Z') {
z++;
}
}
System.out.println("a : "+ a);
System.out.println("b : "+ b);
System.out.println("c : "+ c);
System.out.println("d : "+ d);
System.out.println("e : "+ e);
System.out.println("f : "+ f);
System.out.println("g : "+ g);
System.out.println("h : "+ h);
System.out.println("i : "+ i);
System.out.println("j : "+ j);
System.out.println("k : "+ k);
System.out.println("l : "+ l);
System.out.println("m : "+ m);
System.out.println("n : "+ n);
System.out.println("o : "+ o);
System.out.println("p : "+ p);
System.out.println("q : "+ q);
System.out.println("r : "+ r);
System.out.println("s : "+ s);
System.out.println("t : "+ t);
System.out.println("u : "+ u);
System.out.println("v : "+ v);
System.out.println("w : "+ w);
System.out.println("x : "+ x);
System.out.println("y : "+ y);
System.out.println("z : "+ z);
//방법2 . 알파벳별로 몇개씩 있는지 확인 후 문자열로 생성하고 출력하는 방법
//-> 코드는 단순해 보이지만 연산이 많아짐
//char -> 아스키코드 (A -> 65 Z -> 90 , a -> 97 z -> 122)
//각 알파벳의 개수를 문자열로 저장할 변수
//cntStr = "20011000100020000111000000"
String cntStr = "";
for(int alpha = 65; alpha<=90; alpha++) { //a 부터 차근차근 보기위한 바깥쪽 for문
int alphaCnt = 0; //각 알파벳 별 개수를 저장할 변수, 한 알파벳 개수 센 후에는 0으로 다시 초기화
for(int cnt=0; cnt<input.length(); cnt++) { //문장 전체를 보면서 한 알파벳이 몇개 있는지 보기위한 안쪽 for문
if(input.charAt(cnt)==alpha+32 ||input.charAt(cnt)==alpha) { //각 인덱스 별 해당 알파벳이 있다면 alphaCnt 1증가
alphaCnt++;
}
}
cntStr += alphaCnt; //문자열에 누적 -> cntStr이 String 이므로 숫자 연산이 아닌 문자열 더하기 수행!
}
System.out.println(cntStr);
for(int cnt = 0; cnt<cntStr.length(); cnt++) { //문자열 첫번째 문자부터 출력
System.out.println((char)(cnt+97)+" : "+ cntStr.charAt(cnt));
}
}
}
'JAVA' 카테고리의 다른 글
자바 배열,메소드 문제 (0) | 2022.08.19 |
---|---|
java- 배열 예제 풀이 (0) | 2022.08.19 |
JAVA 단축키 정리 (0) | 2022.08.06 |
java- 반복문 while (0) | 2022.07.27 |
Java- 반복문 for문 (0) | 2022.07.27 |