โค๏ธ Problem
- ๋ฌธ์
๋นจ๊ฐ์, ์ด๋ก์, ํ๋์ ์ ๋ถ์ด x์ถ ์์ ์์ต๋๋ค. ์ธ ์ ๋ถ์ x์ขํ ์์๊ณผ ๋์ด [[start, end], [start, end], [start, end]] ํํ๋ก ๋ค์ด์๋ 2์ฐจ์ ๋ฐฐ์ด lines๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋ ๊ฐ ์ด์์ ์ ๋ถ์ด ๊ฒน์น๋ ๋ถ๋ถ์ ๊ธธ์ด๋ฅผreturn ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด๋ณด์ธ์.
lines๊ฐ [[0, 2], [-3, -1], [-2, 1]]์ผ ๋ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
![](https://blog.kakaocdn.net/dn/1Lpha/btrSf8MLthP/sl8KfsLXd5iNo2HB3i6gQ1/img.png)
- ์ ํ ์ฌํญ
- lines์ ๊ธธ์ด = 3
- lines์ ์์์ ๊ธธ์ด = 2
- ๋ชจ๋ ์ ๋ถ์ ๊ธธ์ด๊ฐ 1 ์ด์์ ๋๋ค.
- lines์ ์์๋ [a, b] ํํ์ด๋ฉฐ, a, b๋ ๊ฐ๊ฐ ์ ๋์ ์ค ํ๋์ ๋๋ค.
- -100 ≤ a < b ≤ 100
- ์ ์ถ๋ ฅ ์ & ์ค๋ช
no | lines | result |
1 | [[0, 1], [2, 5], [3, 9]] | 2 |
2 | [[-1, 1], [1, 3], [3, 9]] | 0 |
3 | [[0, 5], [3, 9], [1, 10]] | 8 |
- ์ด๋ก์๊ณผ ํ๋์ ์ ๋ถ์ด [2, 5], [3, 9]๋ก [3, 5]๋งํผ ๊ฒน์ณ์์ผ๋ฏ๋ก 2๋ฅผ return ํฉ๋๋ค.
- ๊ฒน์น ์ ๋ถ์ด ์์ผ๋ฏ๋ก 0์ return ํฉ๋๋ค.
- ๋นจ๊ฐ์๊ณผ ์ด๋ก์ ์ ๋ถ [3, 5]๋ถ๋ถ์ด ๊ฒน์นฉ๋๋ค.
๋นจ๊ฐ์๊ณผ ํ๋์ ์ ๋ถ [1, 5]๋ถ๋ถ์ด ๊ฒน์นฉ๋๋ค.
์ด๋ก์๊ณผ ํ๋์ ์ ๋ถ์ด [3, 9]๋ถ๋ถ ๊ฒน์นฉ๋๋ค.
๋ฐ๋ผ์ 8์ return ํฉ๋๋ค.
๐ Solution
ํ์ด
class Solution {
public int solution(int[][] lines) {
int answer = 0;
int[] line0 = countLines(countDots(lines[0][0], lines[0][1]));
int[] line1 = countLines(countDots(lines[1][0], lines[1][1]));
int[] line2 = countLines(countDots(lines[2][0], lines[2][1]));
for(int i=0; i<line0.length; i++) {
if(line0[i]+line1[i]+line2[i]>1) {
answer++;
}
}
return answer;
}
public static int[] countDots(int start, int end) {
int[] cntDots = new int[201];
for(int i=start+100; i<=end+100; i++) {
cntDots[i]++;
}
return cntDots;
}
public static int[] countLines(int[] cntDots) {
int[] cntLines = new int[200];
for(int i=1; i<cntDots.length; i++) {
if(cntDots[i-1]==1 && cntDots[i]==1) {
cntLines[i-1]++;
}
}
return cntLines;
}
}
์ฒ๋ฆฌ์๋ Very Good
๐ Comment
์ฒ์ ์์ฑํ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
class Solution {
public int solution(int[][] lines) {
int answer = 0;
int[] cnt = new int[201];
for(int i=0; i<lines.length; i++) {
int start = lines[i][0];
int end = lines[i][1];
for(int j=start; j<=end; j++) {
cnt[100+j]++;
}
}
for(int i=1; i<cnt.length; i++) {
// System.out.println(i+" = "+cnt[i]);
if(cnt[i-1]>1 && cnt[i]>1) {
answer++;
}
}
return answer;
}
}
์ ๋ถ์ด๋ผ ํจ์ ์ ๋ผ๋ฆฌ์ ์ฐ๊ฒฐ์ด๋, ์ ์ ์ด ๊ฐ์๋ฅผ ๋ชจ๋ ํฌํจํ ์ ์๋ ๋ฐฐ์ด์ ๋ง๋ค์ด์ start(a์ )์ end(b์ ) ์ฌ์ด์ ์ซ์๋ฅผ ์ธ๋ฑ์ค๋ก ํ๋ ๊ฐ์ +1์ ํ๋ ๋ฐ๋ณต๋ฌธ์ ๋ง๋ค์๋ค.
์ฌ๊ธฐ์ " -100 ≤ a < b ≤ 100 " ๋ผ๋ ์กฐ๊ฑด์ด ๊ฑธ๋ ค์์๋ค. ์ธ๋ฑ์ค๋ 0๋ณด๋ค ํฐ ์๋ง ๊ฐ๋ฅํ๋ฏ๋ก -100์ ์์ํ๊ธฐ ์ํด a์ ๊ณผ b์ ์ฌ์ด์ ์ซ์์ 100์ ๋ํ ๊ฐ์ด ์ธ๋ฑ์ค๊ฐ ๋๋๋ก ๊ตฌ์ฑํ์๋ค. 0๋ถํฐ 200๊น์ง์ ์ซ์๊ฐ ์ธ๋ฑ์ค์ ํด๋นํ๋ฏ๋ก int[] cnt = new int[201];๊ฐ ๋์๋ค.
ํ์ง๋ง ์คํํด๋ณด๋ ๋ค์๊ณผ ๊ฐ์ด ํ ์คํธ 3๋ฒ๊ณผ ํ ์คํธ 7๋ฒ์ ์คํจํ๋๊ฒ ์๋๊ฐ
๋ด๊ฐ ๊ณ ๋ คํ์ง ์์ ๋ถ๋ถ์ด ๋ฌด์์ธ์ง ํ์ฐธ ๊ณ ๋ฏผํ๋๋ฐ, ์์ธ๋ก ๋ฐ๋ก๋ ๋ฌธ์ ์ค๋ช ์ ๋ค์ด์์๋ค.
lines๊ฐ [[0, 2], [-3, -1], [-2, 1]]์ผ ๋ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ์ ๋ณด๋ฉด [-3, -1]๋ ์ข ๋ฃ์ ์ด -1์ด๊ณ [0, 2]๋ ์์์ ์ด 0์ด๋ค. ๋ด๊ฐ ์ฒ์ ๊ตฌ์ํ๋๋ก ์ฝ๋๋ฅผ ์ง๊ฒ๋๋ฉด ์ ๋ง๋ค +1์ ํ๊ฒ ๋๋ฏ๋ก -1๊ณผ 0์ 1์ด ์ถ๊ฐ๋๋ฏ๋ก ์ ๋ถ์ด ์๋ ๊ฒ์ด ๋ง์น ์ ๋ถ์ฒ๋ผ ๋ณด์ด๋ ๊ฒฐ๊ณผ๊ฐ ์ผ์ด๋ ๊ฒ์ด๋ค!
for๋ฌธ์ผ๋ก cnt[i]๋ฅผ ์ถ๋ ฅํด๋ณด๋ฉด 99๋ฒ์งธ์ 100๋ฒ์งธ๊ฐ ๊ฐ๊ฐ ์๋ก ๋ค๋ฅธ ์ ๋ถ์ ์ข
๋ฃ์ ๊ณผ ์์์ ์ธ๋ฐ๋ ๊ตฌ๋ถ์ด ๋ถ๊ฐ๋ฅํ๋ค. cnt[i-1]>1 && cnt[i]>1๋ผ๋ ์กฐ๊ฑด๋ง์ผ๋ก๋ ์ ๋ถ์ธ์ง๋ฅผ ํ๋จํ๊ธฐ๊ฐ ์ด๋ ค์ ๋ค. ์ฌ์ค ์๋ฏธ ์์ฒด๋ ์ฐ์๋ ์ ์ ๊ฐ์ด ๊ฐ๊ฐ 1์ด์์ธ์ง์ ์ง๋์ง ์์์ผ๋๊น.
๊ทธ๋์ ํ์ด์ ์ด ๋ฐฉ์์ ์ ์ ๊ฐ์๋ฅผ ๊ตฌํ ๋ค์์ ์ ๋ถ์ผ๋ก ์นํํ๋ ์์ ์ ์ถ๊ฐํ ๊ฒ์ด๋ค.
๋จผ์ countDots ๋ฉ์๋๋ฅผ ๋ง๋ค์๋ค. ์ฌ๊ธฐ์๋ ์ธ์๋ก ๊ฐ ์ ๋ถ์ ์์์ ๊ณผ ์ข ๋ฃ์ ์ ์ ๋ฌํ๋ฉด ๊ทธ ๊ฐ์ 100์ ๋ํ ๋ค, ํด๋น ๋ฒ์ ๋ด์ ์๋ ์ซ์๋ฅผ ์ธ๋ฑ์ค๋ก ํ๋ ๋ฐฐ์ด cntDots์ ๊ฐ์ 1์ ๋ํ๋๋ก(cntDots[i]++;) ๋ง๋ค์๋ค. ์ด๋, ๋ฐฐ์ด์ ๊ณตํต์ผ๋ก ์ฌ์ฉํ์ง ์๊ณ ์ ๋ถ๋ง๋ค ๋ค๋ฅด๊ฒ ๊ฐ์ง๋ค. ์ฌ๊ธฐ๊น์ง๋ ์ ์ ๊ฐ์๋ฅผ ์ธ๋ ๋ฐฉ์์ด๋ฏ๋ก ์ด์ ์ฝ๋์ ๋์ผํด๋ณด์ธ๋ค. ๋ค๋ฅธ ์ ์ ํ๋์ ๋ฐฐ์ด์ ๊ทธ ๊ฐ์ ๋์ ํ๋ ๋ฐฉ์์ ํํ์ง ์์๋ค๋ ์ ์ด๋ค.
๊ทธ๋ฐ ๋ค์์ countLines ๋ฉ์๋๋ฅผ ๋ง๋ค์ด์ ๊ฐ ์ ๋ถ์ ์ ๋ฐฐ์ด์ ๊ธฐ๋ฐ์ผ๋ก " cnt[i-1]==1 && cnt[i]==1 "์ธ ๊ฒฝ์ฐ์ ์๋ก ์์ฑํ ๋ฐฐ์ด์ i-1์ธ๋ฑ์ค์ ๊ฐ์ด 1์ฉ ์ฆ๊ฐํ๋๋ก(cntLines[i-1]++;) ๊ตฌํํ๋ค. ์ฌ๊ธฐ์ cntLines[i-1]์ด ์๋ฏธํ๋ ๋ฐ๋ "์์์ ์ cnt[i-1]๋ก ๊ฐ์ง๋ ๊ธธ์ด๊ฐ 1์ธ ์ ๋ถ"์ด๋ค. ์ ์๋ ์ ๋ถ ํ๋๋ฅผ ์์์ ์ ๊ธฐ์ค์ผ๋ก ๊ธธ์ด๋ฅผ 1๋ก ๊ฐ์ ํ์ฌ ๋๊ฐ๋๊ฐ ์๋ผ๋ ๊ฒ.
๊ทธ๋ฐ ๋ค์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด์ lines0[i]+lines1[i]+lines2[i]ํ ๊ฐ์ด 1๋ณด๋ค ํฌ๋ฉด ๊ฒน์ณ์๋ค๋ ์๋ฏธ์ด๋ฏ๋ก answer++;๋ฅผ ์ํํด์ฃผ๋ฉด ๋!!
'Programmers lv-0' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฌธ์์ด ๋ฐ๊ธฐ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
---|---|
์น์์ด (1) - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
๋ก๊ทธ์ธ ์ฑ๊ณต? - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
์ ํ์์ ํ๋ณํ๊ธฐ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
ํํ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
๋ฑ์ ๋งค๊ธฐ๊ธฐ - Java [ํ๋ก๊ทธ๋๋จธ์ค ์ ๋ฌธ] (0) | 2022.11.28 |
๋๊ธ