
* 문제
세 사람의 위치를 나타내는 정수 x, y, z가 주어진다:
x는 사람 1의 위치, y는 사람 2의 위치
z는 사람 3의 위치이며, 사람 3은 움직이지 않는다
사람 1과 사람 2는 동일한 속도로 사람 3 쪽으로 이동한다
누가 사람 3에게 먼저 도착하는지 판단하라:
사람 1이 먼저 도착하면 1 반환
사람 2가 먼저 도착하면 2 반환
동시에 도착하면 0 반환
* 예시 1:
Input: x = 2, y = 7, z = 4
Output: 1
* 설명:
사람 1은 위치 2에서 4까지 이동하면 2만큼 이동
사람 2는 위치 7에서 4까지 이동하면 3만큼 이동
사람 1이 더 빨리 도착하므로 결과는 1
* 예시 2:
Input: x = 2, y = 5, z = 6
Output: 2
* 설명:
사람 1은 위치 2에서 6까지 4만큼 이동
사람 2는 위치 5에서 6까지 1만큼 이동
사람 2가 더 빨리 도착하므로 결과는 2
* 예시 3:
Input: x = 1, y = 5, z = 3
Output: 0
* 설명:
사람 1은 위치 1에서 3까지 2만큼 이동
사람 2는 위치 5에서 3까지 2만큼 이동
두 사람 모두 동시에 도착하므로 결과는 0
* 제한 사항: 1 <= x, y, z <= 100
이 문제는 절댓값 구하는 방법을 알면 비교해서 0,1,2 중에 반환하면 된다.
절댓값 구하는 방법은 abs()를 사용해서 int a = -10일 경우 a.abs()) //10이 된다. 즉 음수는 양수, 양수는 그대로 유지해준다.
class Solution {
int findClosest(int x, int y, int z) {
int a = (z - x).abs();
int b = (z - y).abs();
if (a < b) {
return 1;
} else if (a > b) {
return 2;
} else {
return 0;
}
}
}
그래서 z에 x랑 y의 차이를 비교한 후 제출했더니 성공~
여러 페이지(위젯)를 좌우 또는 상하로 스와이프해서 넘기는 위젯
PageView(
children: [
Container(color: Colors.red),
Container(color: Colors.green),
Container(color: Colors.blue),
],
)
PageController 사용
페이지 이동, 초기 페이지 설정, 현재 페이지 값 얻는 데 사용
final _controller = PageController(initialPage: 0);
PageView(
controller: _controller,
children: [
Page1(),
Page2(),
Page3(),
],
)
방향 변경
PageView(
scrollDirection: Axis.vertical, // 세로 스크롤
children: [...]
)
onPageChanged
현재 페이지 바뀔 때 호출
PageView(
controller: _controller,
onPageChanged: (index) {
print("현재 페이지: $index");
},
children: [...]
)
AnimationController dispose
#무한스크롤 #깊은 복사 #얕은 복사
오늘은 기본 과제를 다 풀고 추가 도전 과제까지 완료했다 히히~ 내일 나만의 기능을 추가해 보고 어려웠던 부분, 튜터님께 물어본 부분 정리하면서 트러블 슈팅을 작성해봐야겠다.