๊ตญ๋น์ง์ D+17
- ์ฝ๋ฉ๋ฐ์ด -
์ฝ๋ฉ๋ฐ์ด
Q) ํ๋ฐ์ ์ฑ์ ํ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ค๋ฆ์ฐจ์ํ์ฌ ๋ฑ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด๋ณด์์ค.
• Main
public class Test1 {
public static void main(String[] args) {
ScoreSort1 score = new ScoreSort1();
int[] arr = new int[] {56, 44, 87, 90, 68, 98, 77, 90, 97, 98};
score.setScoreArr(arr);
score.bubbleSort();
score.printArr();
}
}
• ScoreSort Class
public class ScoreSort1 {
// ๋ณ์ ์ ์ธ
private int[] scoreArr; // ์ฑ์ ๋ฐฐ์ด
/////////////////////////////////////////////////////////
// Setter
public void setScoreArr(int[] scores)
{
scoreArr = new int[scores.length];
for(int i = 0; i < scores.length; i++)
{
scoreArr[i] = scores[i];
}
}
/////////////////////////////////////////////////////////
// Getter
public int[] getScoreArr()
{
return scoreArr;
}
/////////////////////////////////////////////////////////
// ์ค๋ฆ์ฐจ์ ๋ฒ๋ธ์ ๋ ฌ ๋ฉ์๋
public boolean bubbleSort()
{
int temp;
boolean swapFlag = false;
for(int i = 0; i < scoreArr.length - 1; i++)
{
for(int j = 0; j < scoreArr.length - 1 - i; j++)
{
if(scoreArr[j] > scoreArr[j + 1])
{
temp = scoreArr[j];
scoreArr[j] = scoreArr[j + 1];
scoreArr[j + 1] = temp;
swapFlag = true;
}
}
// ๋ฒ๋ธ์ ๋ ฌ ์ต์ ํ
if(swapFlag == true) // swap๋ ์ ์๋ค๋ฉด --> ์ ๋ ฌ์๋ฃ์ํ
{
return true;
}
else // swap๋ ์ ์๋ค๋ฉด --> ์ ๋ ฌ์งํ์ํ
{
swapFlag = false;
}
}
return true;
}
/////////////////////////////////////////////////////////
// ์ ๋ ฌ๋ ๋ฐฐ์ด์ ๋ฑ์๋ก ์ถ๋ ฅํ๋ ๋ฉ์๋
public void printArr()
{
int rank = 0; // ๋ฑ์
int index = scoreArr.length - 1; // ๋ค์ ์๋ ๋ฐฐ์ด์ ๊ฐ๋ถํฐ ๋ถ๋ฌ์ค๊ธฐ ์ํ index ๋ณ์
int sameScoreCnt = 1; // ๊ฐ์ ์ ์๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ์ ๊ฐ์
int beforeScore = -1; // ์ด์ ๋ฐ์ดํฐ์ ์ ์
for(int i = 0; i < scoreArr.length; i++)
{
if(beforeScore != scoreArr[index])
{
rank = rank + sameScoreCnt;
beforeScore = scoreArr[index];
sameScoreCnt = 1;
}
else
{
sameScoreCnt++;
}
System.out.println(rank + "๋ฑ : " + scoreArr[index]);
index--;
}
}
}
Q) Queue๋ฅผ ๊ตฌํํด ๋ณด์์ค.
• Main
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// ์ฌ์ฉ์์๊ฒ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ์
๋ ฅ๋ฐ๋๋ค.
System.out.print("์ํ๋ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์ : ");
int size = scan.nextInt();
Queue2 q = new Queue2(size);
boolean bResult;
int data;
bResult = q.enqueue(11);
bResult = q.enqueue(22);
bResult = q.enqueue(33);
bResult = q.enqueue(44);
bResult = q.enqueue(55);
bResult = q.enqueue(66); // error
data = q.dequeue();
data = q.dequeue();
data = q.dequeue();
data = q.dequeue();
data = q.dequeue();
data = q.dequeue(); // error
bResult = q.enqueue(77);
bResult = q.enqueue(88);
bResult = q.enqueue(99);
data = q.dequeue();
data = q.dequeue();
q.print();
}
}
• Queue Class
public class Queue2 {
// Attribute
private int[] frame; // queue data
private int count; // queue count (queue์ ๋ฐ์ดํฐ๊ฐ ๋ช๊ฐ ์๋๊ฐ?)
private int front; // dequeue์์ ์ฌ์ฉํ๋ ์์น๊ฐ (์ถ๋ ฅ)
private int rear; // enqueue์์ ์ฌ์ฉํ๋ ์์น๊ฐ (์
๋ ฅ)
//////////////////////////////////////////////////////////////////////
// Constructor
// ๊ธฐ๋ณธ ์์ฑ์
public Queue2()
{
frame = null;
count = 0;
front = 0;
rear = 0;
}
// ์ค๋ฒ๋ก๋ฉ๋ ์์ฑ์
public Queue2(int size)
{
frame = new int[size];
count = 0;
front = 0;
rear = 0;
}
//////////////////////////////////////////////////////////////////////
// Method
// getter
public int getFrameSize()
{
return frame.length;
}
public int getCount()
{
return count;
}
// queue๋ฅผ ์ด๊ธฐํ
public void init(int size)
{
frame = new int[size];
count = 0;
front = 0;
rear = 0;
}
// ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๋ ๋ฉ์๋
// true : ๋ฐ์ดํฐ๋ฅผ ์ ์์ ์ผ๋ก frame์ ์ ์ฅํ๋ค.
// false : ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ๋ชปํ๋ค. (queue-full)
public boolean enqueue(int data)
{
// queue-full ๋ผ๋ฉด return
if(getCount() == getFrameSize())
{
return false;
}
// rear์์น์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค๋ค.
frame[rear] = data;
// rear์์น๋ฅผ ์กฐ์ ํ๋ค.
rear++;
rear = rear % getFrameSize();
// ์นด์ดํธ๋ฅผ ์ฆ๊ฐํ๋ค.
count++;
return true;
}
// frame์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ๋ ๋ฉ์๋
// ์๋ฌ๋ฐ์์ ์ ์ํ์ ์ต์๊ฐ์ ๋ฆฌํดํ๋ค.
public int dequeue()
{
int returnValue;
// queue-empty๋ฉด return
if(getCount() == 0)
{
return Integer.MIN_VALUE;
}
// front ์์น์ ๋ฐ์ดํฐ๋ฅผ ๋ฆฌํดํ๋ค.
returnValue = frame[front];
// front์์น๋ฅผ ์กฐ์ ํ๋ค.
front++;
front = front % getFrameSize();
// count๋ฅผ ๊ฐ์ํ๋ค.
count--;
return returnValue;
}
// ๋ฐ์ดํฐ ๊ฐ์ด ๋ค์ด๊ฐ ์์๋๋ก ๊ฐ๊ณผ ์ธ๋ฑ์ค์์น๋ฅผ ์ถ๋ ฅํ๋ ๋ฉ์๋
public void print()
{
int index = front;
for(int i = 0; i < getCount(); i++)
{
System.out.println("index = " + index + ", value = " + frame[index]);
index++;
index = index % getFrameSize();
}
}
}
๋ฐ์ํ
'์๋ > ๊ตญ๋น์ง์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+18] ํด๋์ค ๊ต์ฌ์ ๋ฆฌ (0) | 2022.10.17 |
---|---|
[D+17] Queue (0) | 2022.10.17 |
[D+16] ๊ตฌ์กฐ์ ํ๋ก๊ทธ๋๋ฐ, ๊ฐ์ฒด์งํฅ์ ํ๋ก๊ทธ๋๋ฐ (0) | 2022.10.13 |
[D+15] ๋ฉ๋ชจ๋ฆฌ๋งต ๋ณต์ต, ํด๋์ค(์์ฑ์, static) (0) | 2022.10.12 |
[D+14] ํด๋์ค, ์ถ์ํ, ์ฐธ์กฐํ์ ์์๋ณ์ (0) | 2022.10.11 |
๋๊ธ