우당탕탕 개발일지
[SWEA] 19113. 식료품 가게(Java, D3) 본문
문제
철수는 25% 할인된 가격으로 상점의 모든 품목을 판매한다. 즉, 정상가의 75%로 판매한다.
식료품 가게에서 판매하는 모든 물건의 정상가는 4의 배수인 정수이고, 고로 할인된 가격 역시 모두 정수이다.
철수는 먼저 모든 판매 물품의 할인된 판매가격과 정상 가격표을 프린터로 출력했다.
프린터는 모든 물품의 할인가격과 정상가격을 한꺼번에 오름차순으로 정렬한 뒤 순서대로 출력되어 있다.
예를 들어, 정상가격이 20, 80, 100인 경우 할인가격은 15, 60, 75이며 프린터의 인쇄 출력 더미는 오름차순으로 정렬된 15, 20, 60, 75, 80, 100 가격표들로 구성된다.
이때 물품의 개수가 주어지면 할인된 판매가격을 구하여라
입출력 예
풀이
2중 for문을 사용하여 할인된 가격을 찾아내는 로직으로 구현하였다.
a는 할인된 가격을 의미하고 b는 정상 가격을 의미한다.
2번째 for문은 a+1 부터 시작한다.
그 이유는 배열은 오름차순으로 정렬되어 있고 b는 a보다 항상 크기 때문이다.
할인된 가격과 그에따른 정상가격을 찾으면 배열의 해당 원소들을 0으로 저장하고 할인된 가격을 result 변수에 저장한다.
또한 break를 사용하여 더이상 의미없는 연산을 하지 않도록 하였다.
첫번째 조건문에서 priceArr[a]가 0이 아닌 경우에만 작업한다. 그 이유는 두번째 조건문에서 양쪽 모두 0일 경우을 대비하였다. 또한 priceArr[a]가 0인 경우는 이미 확인값이기 때문에 취급하지 않는다.
코드
import java.util.*;
class Solution
{
public static void main(String args[]) throws Exception
{
Scanner sc = new Scanner(System.in);
int t;
t=sc.nextInt();
for(int tc =1; tc<1+t; tc++) {
int count = sc.nextInt(); // 상품 개수
int[] priceArr = new int[count*2]; // 할인 가격, 정상 가격
String result = "";
int saleIdx=0;
int priceIndex=0;
for(int i=0; i<count*2; i++) {
priceArr[i] = sc.nextInt();
}
for(int a=0; a<count*2; a++) {
if(priceArr[a] != 0) {
for(int b=a+1; b<count*2; b++) {
if(priceArr[a] == priceArr[b]*0.75) {
result += priceArr[a] + " ";
priceArr[a] = 0;
priceArr[b] = 0;
saleIdx++;
break;
}
}
}
}
System.out.println("#"+tc+ " " + result);
}
}
}
SWEA 문제
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AYxCRFA6iiEDFASu
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
'코테 > SW Expert Academy' 카테고리의 다른 글
[SWEA] 1208. [S/W 문제해결 기본] 1일차 - Flatten(Java, D3) (0) | 2024.05.17 |
---|---|
[SWEA] 1206. [S/W 문제해결 기본] 1일차 - View(Java, D3) (0) | 2024.05.17 |
[SWEA] 1213. [S/W 문제해결 기본] 3일차 - String(Java, D3) (0) | 2024.05.13 |
[SWEA] 1234. [S/W 문제해결 기본] 10일차 - 비밀번호(Java, D3) (0) | 2024.05.13 |
[SWEA] 14178. 1차원 정원(Java, D3) (0) | 2024.05.13 |