Skip to content

Commit df7c930

Browse files
committed
Adding : Find area of rectangle and coordinate of character
1 parent be98130 commit df7c930

File tree

7 files changed

+166
-48
lines changed

7 files changed

+166
-48
lines changed
+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// 직사각형 넓이 구하기
2+
// 문제 설명
3+
// 2차원 좌표 평면에 변이 축과 평행한 직사각형이 있습니다. 직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때, 직사각형의 넓이를 return 하도록 solution 함수를 완성해보세요.
4+
5+
// 제한사항
6+
// dots의 길이 = 4
7+
// dots의 원소의 길이 = 2
8+
// -256 < dots[i]의 원소 < 256
9+
// 잘못된 입력은 주어지지 않습니다.
10+
// 입출력 예
11+
// dots result
12+
// [[1, 1], [2, 1], [2, 2], [1, 2]] 1
13+
// [[-1, -1], [1, 1], [1, -1], [-1, 1]] 4
14+
// 입출력 예 설명
15+
// 입출력 예 #1
16+
17+
// 좌표 [[1, 1], [2, 1], [2, 2], [1, 2]] 를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 1, 1이므로 직사각형의 넓이는 1 x 1 = 1입니다.
18+
// 입출력 예 #2
19+
20+
// 좌표 [[-1, -1], [1, 1], [1, -1], [-1, 1]]를 꼭짓점으로 갖는 직사각형의 가로, 세로 길이는 각각 2, 2이므로 직사각형의 넓이는 2 x 2 = 4입니다.
21+
22+
package main
23+
24+
import (
25+
"sort"
26+
)
27+
28+
// x중에서 가장 큰값 - x중에서 가장 작은 값 => x의 길이
29+
// y중에서 가장 큰값 - y중에서 가장 작은 값 => y의 길이
30+
31+
func solution(dots [][]int) int {
32+
a := []int{}
33+
b := []int{}
34+
35+
for i := 0; i < len(dots); i++ {
36+
a = append(a, dots[i][0])
37+
b = append(b, dots[i][1])
38+
}
39+
40+
sort.Ints(a)
41+
sort.Ints(b)
42+
43+
return (a[3] - a[0]) * (b[3] - b[0])
44+
}
45+
46+
func main() {
47+
// dots := [][]int{{1, 1}, {2, 1}, {2, 2}, {1, 2}}
48+
dots := [][]int{{-1, -1}, {1, 1}, {1, -1}, {-1, 1}}
49+
// 제일 아래 왼쪽 점, 제일 아래 오른쪽 점, 제일 위 오른쪽 점, 제일 위 왼쪽 점
50+
solution(dots)
51+
}
+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// 캐릭터의 좌표
2+
// 문제 설명
3+
// 머쓱이는 RPG게임을 하고 있습니다. 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 예를 들어 [0,0]에서 up을 누른다면 캐릭터의 좌표는 [0, 1], down을 누른다면 [0, -1], left를 누른다면 [-1, 0], right를 누른다면 [1, 0]입니다. 머쓱이가 입력한 방향키의 배열 keyinput와 맵의 크기 board이 매개변수로 주어집니다. 캐릭터는 항상 [0,0]에서 시작할 때 키 입력이 모두 끝난 뒤에 캐릭터의 좌표 [x, y]를 return하도록 solution 함수를 완성해주세요.
4+
5+
// [0, 0]은 board의 정 중앙에 위치합니다. 예를 들어 board의 가로 크기가 9라면 캐릭터는 왼쪽으로 최대 [-4, 0]까지 오른쪽으로 최대 [4, 0]까지 이동할 수 있습니다.
6+
// 제한사항
7+
// board은 [가로 크기, 세로 크기] 형태로 주어집니다.
8+
// board의 가로 크기와 세로 크기는 홀수입니다.
9+
// board의 크기를 벗어난 방향키 입력은 무시합니다.
10+
// 0 ≤ keyinput의 길이 ≤ 50
11+
// 1 ≤ board[0] ≤ 99
12+
// 1 ≤ board[1] ≤ 99
13+
// keyinput은 항상 up, down, left, right만 주어집니다.
14+
// 입출력 예
15+
// keyinput board result
16+
// ["left", "right", "up", "right", "right"] [11, 11] [2, 1]
17+
// ["down", "down", "down", "down", "down"] [7, 9] [0, -4]
18+
// 입출력 예 설명
19+
// 입출력 예 설명 #1
20+
21+
// [0, 0]에서 왼쪽으로 한 칸 오른쪽으로 한 칸 위로 한 칸 오른쪽으로 두 칸 이동한 좌표는 [2, 1]입니다.
22+
// 입출력 예 설명 #2
23+
24+
// [0, 0]에서 아래로 다섯 칸 이동한 좌표는 [0, -5]이지만 맵의 세로 크기가 9이므로 아래로는 네 칸을 넘어서 이동할 수 없습니다. 따라서 [0, -4]를 return합니다.
25+
26+
package main
27+
28+
func solution(keyinput []string, board []int) []int {
29+
x, y := 0, 0
30+
arr := []int{}
31+
lx := (board[0] - 1) / 2
32+
ly := (board[1] - 1) / 2
33+
34+
for _, v := range keyinput {
35+
if v == "left" {
36+
x = x - 1
37+
} else if v == "right" {
38+
x = x + 1
39+
} else if v == "up" {
40+
y = y + 1
41+
} else if v == "down" {
42+
// fmt.Println("y", y)
43+
y = y - 1
44+
}
45+
if x > lx {
46+
x = lx
47+
} else if x < -lx {
48+
x = -lx
49+
} else if y > ly {
50+
y = ly
51+
} else if y < -ly {
52+
y = -ly
53+
}
54+
}
55+
56+
arr = append(arr, x)
57+
arr = append(arr, y)
58+
59+
return arr
60+
}
61+
62+
func main() {
63+
// keyinput := []string{"left", "right", "up", "right", "right"}
64+
keyinput := []string{"down", "down", "down", "down", "down"}
65+
// solution(keyinput, []int{11, 11})
66+
solution(keyinput, []int{7, 9})
67+
}

codingTest/programmers/level0/make_folder.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#!/bin/bash
22

3-
for var in {76..100}
3+
num1=$1
4+
num2=$2
5+
for var in {101..130}
46
do
57
mkdir ex$var
68
done

codingTest/programmers/level2/jadencase/jadencase.go

+34-33
Original file line numberDiff line numberDiff line change
@@ -41,41 +41,42 @@
4141
package main
4242

4343
import (
44+
"fmt"
4445
"strings"
4546
)
4647

47-
// func solution(s string) string {
48-
// // upper가 true일 때 대문자, false일 때는 소문자화
49-
// // 문자 첫번째가 숫자일 경우, 나머지 문자는 공백이 나올 때까지 소문자로 변환
50-
// upcheck := 0
51-
// answer := ""
52-
53-
// for i, v := range s {
54-
// if i == 0 && v != 32 {
55-
// //&& v >= 65 && v <= 90
56-
// answer = strings.ToUpper(string(v))
57-
// upcheck = 0
58-
// }
59-
// // fmt.Println("v, answer, upper", v, answer, upcheck)
60-
// // 앞이 숫자일 때
61-
// if v >= 48 && v <= 57 {
62-
// answer += string(v)
63-
// upcheck = 0
64-
// } else if upcheck == 0 && v != 32 && i != 0 {
65-
// answer += strings.ToLower(string(v))
66-
// } else if upcheck == 1 && v != 32 {
67-
// answer += strings.ToUpper(string(v))
68-
// upcheck = 0
69-
// } else if v == 32 {
70-
// answer += string(v)
71-
// upcheck = 1
72-
// }
73-
// }
74-
// fmt.Println("answer", answer)
75-
// return answer
76-
// }
48+
func solution0(s string) string {
49+
// upper가 true일 때 대문자, false일 때는 소문자화
50+
// 문자 첫번째가 숫자일 경우, 나머지 문자는 공백이 나올 때까지 소문자로 변환
51+
upcheck := 0
52+
answer := ""
53+
54+
for i, v := range s {
55+
if i == 0 && v != 32 {
56+
//&& v >= 65 && v <= 90
57+
answer = strings.ToUpper(string(v))
58+
upcheck = 0
59+
}
60+
// fmt.Println("v, answer, upper", v, answer, upcheck)
61+
// 앞이 숫자일 때
62+
if v >= 48 && v <= 57 {
63+
answer += string(v)
64+
upcheck = 0
65+
} else if upcheck == 0 && v != 32 && i != 0 {
66+
answer += strings.ToLower(string(v))
67+
} else if upcheck == 1 && v != 32 {
68+
answer += strings.ToUpper(string(v))
69+
upcheck = 0
70+
} else if v == 32 {
71+
answer += string(v)
72+
upcheck = 1
73+
}
74+
}
75+
fmt.Println("answer", answer)
76+
return answer
77+
}
7778

78-
func solution(s string) string {
79+
func solution1(s string) string {
7980
arr := []string{}
8081
for _, v := range s {
8182
arr = append(arr, string(v))
@@ -95,7 +96,7 @@ func solution(s string) string {
9596
return answer
9697
}
9798

98-
func solution1(s string) string {
99+
func solution2(s string) string {
99100
return strings.Title(strings.ToLower(s))
100101
}
101102

@@ -109,5 +110,5 @@ func main() {
109110
// 3people Unfollowed Me
110111
// 3PeoPle unFoLLowed mE
111112

112-
solution(s)
113+
solution1(s)
113114
}

go.mod

+1
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,6 @@ require (
1212
require (
1313
github.com/davecgh/go-spew v1.1.1 // indirect
1414
github.com/pmezard/go-difflib v1.0.0 // indirect
15+
golang.org/x/text v0.11.0 // indirect
1516
gopkg.in/yaml.v3 v3.0.1 // indirect
1617
)

go.sum

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ github.com/tuckersGo/musthaveGo/ch20/koreaPost v0.0.0-20230126175348-6f7945b85bd
1010
github.com/tuckersGo/musthaveGo/ch20/koreaPost v0.0.0-20230126175348-6f7945b85bda/go.mod h1:NVQ7TuLq9vFXfKzLlfauADJxh3Dnj66QVHB605JmAPo=
1111
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df h1:UA2aFVmmsIlefxMk29Dp2juaUSth8Pyn3Tq5Y5mJGME=
1212
golang.org/x/exp v0.0.0-20230626212559-97b1e661b5df/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc=
13+
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
14+
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
1315
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
1416
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
1517
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

goLib/string/title/title.go

+8-14
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,16 @@
1-
// https://pkg.go.dev/strings#Title
2-
// func
3-
// Title
4-
// DEPRECATED
5-
// func Title(s string) string
6-
// Title returns a copy of the string s with all Unicode letters that begin words mapped to their Unicode title case.
7-
8-
// Deprecated: The rule Title uses for word boundaries does not handle Unicode punctuation properly. Use golang.org/x/text/cases instead.
9-
101
package main
112

123
import (
134
"fmt"
14-
"strings"
5+
6+
"golang.org/x/text/cases"
7+
"golang.org/x/text/language"
158
)
169

1710
func main() {
18-
// Compare this example to the ToTitle example.
19-
fmt.Println(strings.Title("her royal highness"))
20-
fmt.Println(strings.Title("loud noises"))
21-
fmt.Println(strings.Title("хлеб"))
11+
str := "peter parker. james bond"
12+
caser := cases.Title(language.English)
13+
fmt.Println("str = ", str)
14+
str_title := caser.String(str)
15+
fmt.Println("str_title_cased = ", str_title)
2216
}

0 commit comments

Comments
 (0)