[ํ๋ก๊ทธ๋๋จธ์ค] ์ง์ ๊ตฐ ์ถ์ฒํ๊ธฐ
https://programmers.co.kr/learn/courses/30/lessons/84325
๋ฌธ์ ์ค๋ช
๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ์ธ์ด์ ์ธ์ด ์ ํธ๋๋ฅผ ์ ๋ ฅํ๋ฉด ๊ทธ์ ๋ง๋ ์ง์ ๊ตฐ์ ์ถ์ฒํด์ฃผ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฐํ๋ ค๊ณ ํฉ๋๋ค.
์๋ ํ๋ 5๊ฐ ์ง์ ๊ตฐ ๋ณ๋ก ๋ง์ด ์ฌ์ฉํ๋ 5๊ฐ ์ธ์ด์ ์ง์ ๊ตฐ ์ธ์ด ์ ์๋ฅผ ๋ถ์ฌํ ํ์ ๋๋ค.
์ ์ SI CONTENTS HARDWARE PORTAL GAME
5 JAVA JAVASCRIPT C JAVA C++
4 JAVASCRIPT JAVA C++ JAVASCRIPT C#
3 SQL PYTHON PYTHON PYTHON JAVASCRIPT
2 PYTHON SQL JAVA KOTLIN C
1 C# C++ JAVASCRIPT PHP JAVA
์๋ฅผ ๋ค๋ฉด, SQL์ SI ์ง์
๊ตฐ ์ธ์ด ์ ์๋ 3์ ์ด์ง๋ง CONTENTS ์ง์
๊ตฐ ์ธ์ด ์ ์๋ 2์ ์
๋๋ค. SQL์ HARDWARE, PORTAL, GAME ์ง์
๊ตฐ ์ธ์ด ์ ์๋ 0์ ์
๋๋ค.
์ง์ ๊ตฐ ์ธ์ด ์ ์๋ฅผ ์ ๋ฆฌํ ๋ฌธ์์ด ๋ฐฐ์ด table, ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ์ธ์ด๋ฅผ ๋ด์ ๋ฌธ์์ด ๋ฐฐ์ด languages, ์ธ์ด ์ ํธ๋๋ฅผ ๋ด์ ์ ์ ๋ฐฐ์ด preference๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํ๋ ์ธ์ด์ ์ธ์ด ์ ํธ๋ x ์ง์ ๊ตฐ ์ธ์ด ์ ์์ ์ดํฉ์ด ๊ฐ์ฅ ๋์ ์ง์ ๊ตฐ์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ดํฉ์ด ๊ฐ์ ์ง์ ๊ตฐ์ด ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ, ์ด๋ฆ์ด ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ์ง์ ๊ตฐ์ return ํด์ฃผ์ธ์.
์ ํ์ฌํญ
- table์ ๊ธธ์ด = 5
table์ ์์๋ "์ง์ ๊ตฐ 5์ ์ธ์ด 4์ ์ธ์ด 3์ ์ธ์ด 2์ ์ธ์ด 1์ ์ธ์ด"ํ์์ ๋ฌธ์์ด์ ๋๋ค. ์ง์ ๊ตฐ, 5์ ์ธ์ด, 4์ธ์ด, 3์ ์ธ์ด, 2์ ์ธ์ด, 1์ ์ธ์ด๋ ํ๋์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
table์ ๋ชจ๋ ํ ์คํธ์ผ์ด์ค์์ ๋์ผํฉ๋๋ค. - 1 โค languages์ ๊ธธ์ด โค 9
languages์ ์์๋ "JAVA", "JAVASCRIPT", "C", "C++" ,"C#" , "SQL", "PYTHON", "KOTLIN", "PHP" ์ค ํ ๊ฐ ์ด์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
languages์ ์์๋ ์ค๋ณต๋์ง ์์ต๋๋ค. - preference์ ๊ธธ์ด = languages์ ๊ธธ์ด
1 โค preference์ ์์ โค 10 - preference์ i๋ฒ์งธ ์์๋ languages์ i๋ฒ์งธ ์์์ ์ธ์ด ์ ํธ๋์ ๋๋ค.
- return ํ ๋ฌธ์์ด์ "SI", "CONTENTS", "HARDWARE", "PORTAL", "GAME" ์ค ํ๋์ ๋๋ค.
Code
Java
class Solution {
public String solution(String[] table, String[] languages, int[] preference) {
String answer = null;
int cur_score,max_score;
max_score = 0;
for(int i=0; i<table.length; i++){
cur_score = 0;
String[] temp = table[i].split(" ");
for(int j = 1; j<temp.length; j++){
for(int k = 0; k<languages.length; k++){
if(temp[j].equals(languages[k])){
cur_score += (6-j)*preference[k];
}
}
}
if(max_score < cur_score){
max_score = cur_score;
answer = temp[0];
}
if(max_score == cur_score){
if(answer.compareTo(temp[0])>0){
answer=temp[0];
}
}
}
return answer;
}
}
Code ์ค๋ช
table์ ๋ฐ๋ณต๋ฌธ์ ํตํด์ ํ์ค์ฉ ์ฒ๋ฆฌํ๋ค.
๋จผ์ split์ ์ด์ฉํด์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ์๋ผ์ String ๋ฐฐ์ด "temp"์ ๋ฃ์ด์ค๋ค.
temp์ ์ฒซ๋ฒ์งธ ์์๋ ์ง์
์ ๊ดํ ๊ฒ์ด๋ฏ๋ก ๋๋ฒ์งธ๋ถํฐ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ languages์ ์๋ ๊ฐ๋ค๊ณผ ๋น๊ต๋ฅผ ํด์ค๋ค.
temp์ ๋๋ฒ์งธ ์์๋ถํฐ 5์ ์ง์
๊ตฐ์ด๋ฏ๋ก score๋ (6-j)๋ฅผ ํ์ฌ ๋ง์ถฐ์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํธ๋์ ๊ณฑํด์ cur_score์ ๋ํด์ค๋ค. cur_score๋ ํ์ฌ ์ง์
์ ์ ํธ๋์ ์ ์๋ฅผ ๋ชจ๋ ๋ํด์ค๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ max_score์ ๋น๊ตํด์ฃผ์ด ๋์ ์ ์๋ฅผ ๊ฐ์ง ์ง์
๊ตฐ์ answer์ ๋ฃ์ด์ค๋ค. ์ด๋ max_score์ cur_score๊ฐ ๊ฐ๋ค๋ฉด ๋ ์ง์
๊ตฐ์ค์์ compareTo๋ฅผ ์ด์ฉํด์ ์ฌ์ ์์ผ๋ก ๋น ๋ฅธ ์ง์
๊ตฐ์ anwer์ ๋ฃ์ด์ค๋ค.
๋ฐฐ์ด์
- String[] arr ์ด ์์๋ String[] arr2 = arr.split("์ํ๋ ๋ฌธ์")๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ํ๋ ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ์๋ผ์ arr2๋ฐฐ์ด์ ๋ฃ์ด์ค ์ ์๋ค.
- String str1,str2 ๊ฐ ์์ ๋ str1.compareTo(str2)๋ฅผ ํ๊ฒ๋๋ค๋ฉด
- str1๊ณผ str2๊ฐ ๊ฐ๋ค๋ฉด 0
- str1์ด str2 ๋ณด๋ค ์ฌ์ ์์ผ๋ก ๋น ๋ฅด๋ค๋ฉด ์์
- str1์ด str2๋ณด๋ค ์ฌ์ ์์ผ๋ก ๋๋ฆฌ๋ค๋ฉด ์์
๋ฅผ ๋ฐํํด์ค๋ค.
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] 3์ง๋ฒ ๋ค์ง๊ธฐ (0) | 2021.09.05 |
---|---|
[Algorithm/JAVA][ํ๋ก๊ทธ๋๋จธ์ค] ์คํจ์จ (0) | 2021.09.04 |
[Algoritm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ท ์์ด๋ ์ถ์ฒ (0) | 2021.07.28 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋คํธ ๊ฒ์ (0) | 2021.07.23 |
[Algoritm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์์ฐ (0) | 2021.07.23 |