๐ช๐ป programmers Lv1(24.09.23 - 10๋ฌธ์ )
์ฝ๋ฉ ํ ์คํธ๋ฅผ ๋ค์ ์ค๋นํ๋ฉฐ
์ฝ๋ฉ ํ ์คํธ๋ฅผ ์ค๋นํ๋ฉด์ ๋ฌธ์ ๋ฅผ ํ ๋ ๊น์ด ๊ณ ๋ฏผํ๊ธฐ๋ณด๋ค๋ ์๊ธฐํ ๋ฐฉ๋ฒ์ผ๋ก๋ง ํด๊ฒฐํ๋ ค ํ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋ฌธ์ ๊ฐ ์กฐ๊ธ๋ง ๊ผฌ์ฌ๋ ๋ต์ ์ฐพ์ง ๋ชปํ๊ณ , ๋ต์์ ๋ณด๋ฉฐ ์ดํดํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค.
๋ต์์ ๋ณด๊ณ ํ์ด๋ฅผ ๋ฐ๋ผ๊ฐ๋ค ๋ณด๋ ์ฌ๊ณ ๋ ฅ์ด ๊ธธ๋ฌ์ง์ง ์์๊ณ , ๋ค์์ ๋น์ทํ ๋ฌธ์ ๋ฅผ ๋ง๋๋ ์ ๋๋ก ํ์ง ๋ชปํ๋ ์ผ์ด ๋ฐ๋ณต๋๋ ๋ฌธ์ ๊ฐ ์๊ฒผ๋ค. ์ด์ ๋ ๋์ด๋๊ฐ ๋ฎ์ ๋ฌธ์ ๋ถํฐ ๋ค์ ์์ํด์, ๋ฌธ์ ๋ฅผ ํ ๋ ์ด๋ค ๊ณ ๋ฏผ์ ํ๊ณ ์ด๋ค ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ์ฉํ๋์ง ํ๋ํ๋ ์ ๋ฆฌํ๋ ค๊ณ ํ๋ค. ์๋ ์ฝ๊ฐ ์ฌ์ด ๋ฌธ์ ๋ค์ ๊ณ ๋ฏผํ๋ ๋ชจ์ต๋ค์ด ์ค์ค๋ก ๋ถ๋๋ฌ์์ ๋์ถฉ ํ๊ณ ๋๊ธฐ๊ณ ๊ทธ๋ฌ๋๋ฐ ์ด์ ๋ ๋ด ์ค๋ ฅ์ ์์ ํ ํ์ ํ๊ณ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋๋ผ๋ ํฌ๊ธฐํ์ง ์๊ณ ๊พธ์คํ ํด๋๊ฐ๋ ๊ฒ ๋ชฉํ๋ค!
1) ํ๊ท ๊ตฌํ๊ธฐ
๋ฐฐ์ด arr์ ํ๊ท ๊ฐ์ return ํ๋ ํจ์ ๊ตฌํ๊ธฐ
1) ๋ฐฐ์ด์ ํฉ ๊ตฌํ๊ธฐ
- 2) ๋ฐฐ์ด์ ํฉ์ ๋ฐฐ์ด์ ๊ธธ์ด๋ก ๋๋๊ธฐ
- โ int ๋ฐฐ์ด ๊ธธ์ด๋ฅผ ๊ตฌํ ๋
arr.length
-> length ๊ดํธ ์ ๋ถ์!
1
2
3
4
5
6
7
8
9
10
class Solution {
public double solution(int[] arr) {
double sum = 0;
for(int i=0;i<arr.length;i++)
{
sum += arr[i];
}
return sum/arr.length;
}
}
2) x๋งํผ ๊ฐ๊ฒฉ์ด ์๋ n๊ฐ์ ์ซ์
์ ์ x, ์์ฐ์ n์ ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ ๋ฐ์. x๋ถํฐ ์์ํด x์ฉ ์ฆ๊ฐํ๋ ์ซ์๋ฅผ n๊ฐ ์ง๋๋ ๋ฆฌ์คํธ๋ฅผ ๋ฆฌํดํ๋ ๋ฆฌ์คํธ ๊ตฌํ๊ธฐ
1) for๋ฌธ์ n๊น์ง ๋ฐ๋ณตํจ. answer[i-1] = x*i;
- โ ๋ฐฐ์ด ์ ์ธ์ ์ ๋๋ก ํด์ผ ํจ!
long[] answer = new long[n];
long ํ์ ์ ๋ฐฐ์ด answer์ ์ ์ธํ๊ณ ํฌ๊ธฐ๋ฅผ n์ผ๋ก ์ง์ ํจ. ์๋ฅผ ๋ค์ด n์ด ๋ผ๋ฉด 5๊ฐ์ long ๊ฐ์ ์ ์ฅํ ์ ์๋ ๊ณต๊ฐ์ด ์๊ธฐ๊ณ ๊ฐ ์์๋ ๊ธฐ๋ณธ ๊ฐ์ธ 0์ผ๋ก ์ด๊ธฐํ ๋จ.
- ๋ฐฐ์ด์ ์ ์ธํ๋ ์ด์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ฅํ ๋ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ์ํด์! 1๊ฐ์ ๋ณ์๋ 1๊ฐ์ ๊ฐ๋ง์ ์ ์ฅํ ์ ์์ง๋ง ๋ฐฐ์ด ์ฌ์ฉ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ๋ณ์๋ก ๊ด๋ฆฌํ ์ ์๋ค๋ ์ฅ์
1
2
3
4
5
6
7
8
9
10
class Solution {
public long[] solution(int x, int n) {
long[] answer = new long[n];
for(int i=1;i<=n;i++)
{
answer[i-1] = (long)x*i;
}
return answer;
}
}
์ ํ ์กฐ๊ฑด
- x๋ -10000000 ์ด์, 10000000 ์ดํ์ธ ์ ์์ ๋๋ค.
n์ 1000 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- ์ ํ ์กฐ๊ฑด์ ๋ณด๋ฉด x*i์ ๊ฐ์ฅ ํฐ ๊ฐ์ด 10,000,000 * 1000 = 10,000,000,000์ด์ด์ int ๋ฒ์๋ฅผ ์ด๊ณผํ๋ฏ๋ก x์ ํ์ ์ ๋ณํํด์ผ ํจ.
- ๐ ์๋ฌธ์ : ์ i์ ๊ฐ์ ํ ๋ณํ ์ ํ๊ณ x์ ๊ฐ์ ํ ๋ณํํ๋ ๊ฒ์ผ๊น?
java์์ ์ฐ์ฐ์ ํ ๋ ๋ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ int ํ์ ์ด๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ int ํ์ ์ ๊ณ์ฐ๋๋ค. ํ์ง๋ง x์ i์ ๊ณฑ์ ์ด int ๋ฒ์๋ฅผ ๋๋ ๊ฐ์ด ๋ ์ ์์ ๋ ๊ทธ ๊ฐ์ long ํ์ ์ผ๋ก ์์ ํ๊ฒ ์ฒ๋ฆฌ๋๋๋ก ํด์ผ ํจ!
- ๊ทธ๋์ ๋ ์ค ํ๋๋ผ๋ long์ผ๋ก ํ ๋ณํ์ ํ๋ฉด java๋ ๊ณฑ์ ๊ฒฐ๊ณผ๋ฅผ long์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
์ฆ, ์ ์ฝ๋์์ x๋ฅผ ํ ๋ณํ ํ๊ธฐ ๋๋ฌธ์ i๋ ๋ฐ๋ก ํ ๋ณํํ ํ์๊ฐ ์์ด java๊ฐ ์๋์ผ๋ก i๋ฅผ long์ผ๋ก ๋ณํํด์ ๊ณฑ์ ์ ์งํํ๊ฒ ๋๋ค.
- ๊ทธ๋ ๋ค๋ฉด i๋ฅผ ํ ๋ณํํ๋ฉด ์ ๋ ๊น? ๋ต์ ๋๋ค! ํ์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก ์์๋ฅผ ํ ๋ณํํ๋ ๊ฒ๋ณด๋ค ์ด๋ฏธ ๋ณ์๋ก ์ฃผ์ด์ง ๊ฐ์ ํ ๋ณํํ๋ ๊ฒ ๋ ์ง๊ด์ ์ด๋ค.
3) ์ฝ์์ ํฉ
์ ์ n์ ์ ๋ ฅ๋ฐ์ n์ ์ฝ์๋ฅผ ๋ชจ๋ ๋ํ ๊ฐ์ ๋ฆฌํดํ๋ ํจ์ ๊ตฌํ๊ธฐ
1) ๋ฐ๋ณต๋ฌธ์ ์ ๋ ฅ ๋ฐ์ ์ ์์ ์๋งํผ ๋ฐ๋ณตํ๊ธฐ
2) ์ ๋ ฅ๋ฐ์ ์ ์๋ฅผ i๋งํผ ๋๋ ๋๋จธ์ง๊ฐ 0์ด ๋ ๋ (์ฝ์ ๊ตฌํ๊ธฐ) i์ ๊ฐ์ ๋ํ๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n;i++)
{
if(n%i==0)
{
answer+=i;
}
}
return answer;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=1;i<=n/2;i++)
{
if(n%i==0)
{
answer+=i;
}
}
return answer+n;
}
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ก ๋ณธ ์ฝ๋, n/2๊น์ง๋ง ๋ฐ๋ณต๋ฌธ์ ๋๋ ์ด์ ๋ ํจ์จ์ ์ธ ์ฝ์๋ฅผ ์ฐพ๊ธฐ ๋๋ฌธ์. ์๋ฅผ ๋ค์ด 12์ ์ฝ์๋ 1, 2, 3, 4, 6, 12์ด๋ค.
์ด๋ค ์์ ์ ๋ฐ๋ณด๋ค ํฐ ์๋ ๊ทธ ์์ ์ฝ์๊ฐ ๋ ์ ์๋ค! ์์ ์์๋ก 12์ ์ ๋ฐ์ธ 6๋ณด๋ค ์์ ์๋ 1, 2, 3, 4, 6 ์ด๊ฒ๋ง ๋ณด๊ณ n์ธ 12๋ ๋ง์ง๋ง์ ๋ฐ๋ก ๋ํด์ ์ฒ๋ฆฌ๋ฅผ ํ๋ฉด ๋๋ค.
4) ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ๊ธฐ
1
2
3
4
5
6
class Solution {
public int solution(String s) {
int answer = Integer.valueOf(s);
return answer;
}
}
1
2
3
4
5
6
class Solution {
public int solution(String s) {
int answer = Integer.parseInt(s);
return answer;
}
}
Integer.valueOf(s)
- valueOf ๋ฉ์๋๋ ๋ฌธ์์ด์ Integer ๊ฐ์ฒด๋ก ๋ณํคํจ. ๋ง์ฝ ๋ณํ๋ ๊ฐ์ int ํ์ ๋ณ์์ ์ ์ฅํ๋ฉด ์๋์ผ๋ก ์ธ๋ฐ์ฑ ๊ณผ์ ์ด ๋ฐ์ํจ. ์ด ๋ฉ์๋๋ ์บ์ฑ์ ์ฌ์ฉํ๋ฏ๋ก ๊ฐ์ ๊ฐ์ ์ฌ๋ฌ ๋ฒ ๋ณํํ ๊ฒฝ์ฐ ์ฑ๋ฅ์ด ์ข์
Integer.parseInt(s)
- parseInt ๋ฉ์๋๋ ๋ฌธ์์ด์ int ํ์ ์ผ๋ก ์ง์ ๋ณํํจ. ๋ฐํ๊ฐ์ด ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์ ์ธ int ์ด๋ฏ๋ก ์ถ๊ฐ์ ์ธ ๊ฐ์ฒด ์์ฑ์ด ์๊ณ , ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ฑ์ด ๋ ์ข์.
5) ์๋ฆฟ์ ๋ํ๊ธฐ
์์ฐ์ N์ด ์ฃผ์ด์ง๊ณ N์ ๊ฐ ์๋ฆฟ์์ ํฉ์ ๊ตฌํ๊ธฐ
1) while๋ฌธ์ ํตํด n์ด 0์ด ์๋ ๋๊น์ง ๋ฐ๋ณตํ๊ธฐ (์์ฐ์ N์ด ์ด๋ ํ ๊ฐ์ธ์ง ๋ชจ๋ฅด๋๊น)
2) n์ 10์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๋ํ๊ธฐ ์๋ฅผ ๋ค์ด 123 ์ด๋ฉด 3 ์ด ๋จผ์ ๋ํด์ง. n์ ๊ฐ์ 10์ผ๋ก ๋๋ ๊ฐ์ผ๋ก ๊ฐฑ์ ํ๊ธฐ. ์ด ๊ณผ์ ์ n์ด 0์ด ์๋ ๋๊น์ง ๋ฐ๋ณตํ๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.*;
public class Solution {
public int solution(int n) {
int answer = 0;
while(n!=0)
{
answer += (n%10);
n = n/10;
}
return answer;
}
}
6) ๋๋จธ์ง๊ฐ 1์ด ๋๋ ์ ์ฐพ๊ธฐ
์์ฐ์ n์ x๋ก ๋๋ ๋๋จธ์ง๊ฐ 1์ด ๋๋๋ก ํ๋ ๊ฐ์ฅ ์์ ์์ฐ์ x ๊ตฌํ๊ธฐ
- 1) min ๋ณ์๋ฅผ ์ ์ธํด์ ์ ์ผ ํฐ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๊ธฐ
- 2) ๋ฐ๋ณต๋ฌธ์ n๊น์ง ๋ฐ๋ณตํ๊ณ n์ i๋ก ๋๋ ๋๋จธ์ง๊ฐ 1์ด ๋ ๋ ์ต์๊ฐ ๊ตฌํ๊ธฐ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
class Solution {
public int solution(int n) {
int min = Integer.MAX_VALUE; // min์ ์ ์ผ ํฐ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๊ธฐ
for(int i=1;i<=n;i++)
{
if(n%i==1)
{
if(min>i)
{
min = i;
}
}
}
return min;
}
}
- โ ๋ณ์๋ฅผ ์ ์ผ ํฐ ๊ฐ์ผ๋ก ์ด๊ธฐํ -
Integer.MAX_VALUE
7) ์ง์์ ํ์
์ ์ num์ด ์ง์์ผ ๊ฒฝ์ฐ โEvenโ์ ๋ฐํํ๊ณ ํ์์ผ ๊ฒฝ์ฐ โOddโ๋ฅผ ๋ฐํํ๊ฒ
1) ์ผํญ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด์ ์ง์์ผ ๋ โEvenโ, ํ์์ผ ๋ โOddโ ์ถ๋ ฅํ๊ฒ
1
2
3
4
5
class Solution {
public String solution(int num) {
return num%2 == 0 ? "Even" : "Odd";
}
}
8) ๋ฌธ์์ด ๋ด p์ y์ ๊ฐ์
๋, ์๋ฌธ์๊ฐ ์์ฌ์๋ ๋ฌธ์์ด s, s์ โpโ์ ๊ฐ์์ โyโ์ ๊ฐ์๋ฅผ ๋น๊ตํด ๊ฐ์ผ๋ฉด True, ๋ค๋ฅด๋ฉด False๋ฅผ ๋ฐํํ๋ ํจ์ ๊ตฌํ๊ธฐ
Java์์๋ ๋ฌธ์์ด์ ๋น๊ตํ ๋
==
๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด์ ์ฐธ์กฐ๋ฅผ ๋น๊ตํ๊ฒ ๋๋ฏ๋กequals
๋ฅผ ์ฌ์ฉํด์ผ ๋จ!1) ๋จผ์ ๋ฌธ์์ด s๋ฅผ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณํ ->
s = s.toUpperCase();
2) ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ํ๋์ฉ ์๋ผ์ ๋ฐฐ์ด์ ์ ์ฅ ->
String[] str = s.split("");
- 3) ๋ฌธ์์ด์ ๊ธธ์ด๋งํผ ๋ฐ๋ณตํ๊ณ ๋ฌธ์์ด์ด โPโ์ผ ๊ฒฝ์ฐ p_num ๊ฐ ์ฆ๊ฐ, ๋ฌธ์์ด์ด โYโ์ผ ๊ฒฝ์ฐ y_num ๊ฐ ์ฆ๊ฐ
- 4) ์ผํญ์ฐ์ฐ์๋ฅผ ํตํด ๋ฐํ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.*;
class Solution {
boolean solution(String s) {
boolean answer = true;
int p_num = 0;
int y_num = 0;
s = s.toUpperCase(); // ๋ฌธ์์ด s๋ฅผ ๋ชจ๋ ๋๋ฌธ์๋ก ๋ณํ
String[] str = s.split(""); // PPOOOYY
for(int i=0;i<str.length;i++)
{
if(str[i].equals("P"))
{
p_num++;
}
else if(str[i].equals("Y"))
{
y_num++;
}
}
return (p_num == y_num ? answer : !answer);
}
}
9) ์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ
์์ฐ์ n์ ๋ค์ง์ด ๊ฐ ์๋ฆฌ ์ซ์๋ฅผ ์์๋ก ๊ฐ์ง๋ ๋ฐฐ์ด ํํ๋ก ๋ฆฌํด
- 1) long ํ์
์์ฐ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํ ->
String s = String.valueOf(n);
2) ๋ฌธ์์ด์ ๋ฌธ์๋ฅผ ํ๋์ฉ ์๋ผ์ ๋ฐฐ์ด์ ์ ์ฅ ->
String[] str = s.split("");
- 3) ๋ฌธ์์ด์ ์ ์๋ก ๋ณํํ๊ณ ๋ค์ง์ด์ ์ ์ฅ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.*;
class Solution {
public int[] solution(long n) {
String s = String.valueOf(n);
String[] str = s.split(""); // 1 2 3 4 5
int[] answer = new int[str.length];
int idx = 0;
for(int i=str.length-1;i>=0;i--)
{
answer[idx++] = Integer.parseInt(str[i]); // ๋ค์ง์ด์ ์ ์ฅ
}
return answer;
}
}
- โ ํ๋ฆฐ ๋ถ๋ถ : str.length ์ด๋ฉด 5์ด๋ฏ๋ก str.length-1๋ถํฐ ์์ํ์ด์ผํจ. ์ฒ์ str[idx++] ์ ์ ์ฅํ๋๋ฐ ๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ณผ๊ฐ [5,4,3,4,5] ๋ก ๋๋ ์๋ก์ด ๋ณ์์ธ answer[idx++]๋ก ์ ์ฅํด์ผ ํจ.
10) ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ
์ ์ n์ ๊ฐ ์๋ฆฟ์๋ฅผ ํฐ ๊ฒ๋ถํฐ ์์ ์์ผ๋ก ์ ๋ ฌํ ์๋ก์ด ์ ์๋ฅผ ๋ฆฌํด
1) ์์ฐ์ n์ ๋ฌธ์์ด๋ก ๋ณํ -> String s = String.valueOf(n);
2) ๋ฌธ์์ด์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ณํ -> char[] ch = s.toCharArray();
3) ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
4) StringBuilder ๋ฅผ ์ด์ฉํ์ฌ ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ
5) ๋ฌธ์๋ฅผ ์ ์๋ก ๋ณํ
1
2
3
4
5
6
7
8
9
10
11
12
import java.util.*;
class Solution {
public long solution(long n) {
String s = String.valueOf(n); // ์ ์๋ฅผ ๋ฌธ์์ด๋ก ๋ณํ
char[] ch = s.toCharArray(); // ๋ฌธ์์ด์ ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ณํ
Arrays.sort(ch); // ์ค๋ฆ์ฐจ์ 1 1 2 3 7 8
StringBuilder sb = new StringBuilder(new String(ch)).reverse(); // ๋ด๋ฆผ์ฐจ์
return Long.parseLong(sb.toString());
}
}
StringBuilder๋ ๋ฌธ์์ด์ ํจ์จ์ ์ผ๋ก ์์ ํ๊ณ ์กฐ์ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ํด๋์ค, toString() ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ์ค์ ๋ฌธ์์ด ํํ๋ก ๋ณํํ ์ ์์.
StringBuilder๋ ๋ด๋ถ์ ์ผ๋ก ๋ฌธ์์ด์ ์ ์ฅํ์ง๋ง ์ง์ ์ ์ผ๋ก ๋ฌธ์์ด์ฒ๋ผ ์ฌ์ฉํ ์๋ ์๊ธฐ ๋๋ฌธ์ toString() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ StringBuilder์ ์ ์ฅ๋ ๋ด์ฉ์ ๋ฌธ์์ด๋ก ๋ฐํ๋ฐ๋ ๊ฒ