https://developer.apple.com/library/archive/documentation/IDEs/Conceptual/iOS_Simulator_Guide/TestingontheiOSSimulator/TestingontheiOSSimulator.html

 

Testing and Debugging in Simulator

Retired Document Important: The information in this document is deprecated in Xcode 9. For Xcode 9 and later, see Simulator Help by choosing Help > Simulator Help in Simulator. Testing and Debugging in Simulator Simulator is a great tool for rapid prototyp

developer.apple.com

시뮬레이터에서 할 수 없는 동작들에 대해 생각해보았다. 시뮬레이터 관련 공식문서는 찾았지만 구버전의 xcode 시뮬레이터 관련 문서였고, 최근 버전의 레퍼런스 페이지에서는 시뮬레이터 관련 문서를 찾지 못했다. 일단 구버전 문서의 기준에 따르면 다음과 같은 동작들이 불가능하다.


Hardware Differences

Though most of the functionality of devices can be simulated in Simulator, some hardware features must be tested directly on a device. The hardware features that are not simulated as of iOS 8.2 are:

  • Motion support (accelerometer and gyroscope) are unsupported.
  • Audio and video input (camera and microphone) are unsupported.
  • Proximity sensor
  • Barometer
  • Ambient light sensor

API Differences

Simulator APIs don’t have all the features that are available on a device. For example, the APIs don’t offer:

  • Receiving and sending Apple push notifications
  • Privacy alerts for access to Photos, Contacts, Calendar, and Reminders
  • The UIBackgroundModes key
  • Handoff support

In addition, Simulator doesn’t support the following frameworks:

  • External Accessory
  • IOSurface
  • Media Player
  • Message UI
  • In UIKit, the UIVideoEditorController class

한 가지 의문인 점은 하드웨어에서의 오디오 입력 부분이다. 현시점 시뮬레이터 14.1 버전에서는 입출력 관련 메뉴가 따로 있다. 해당 메뉴를 통해 오디오 입력을 맥북의 마이크로 지정할 수 있고, 실제로 입력이 가능한지 텍스트 입력을 해보았다.

영어는 물론 한국어로도 잘 인식이 되는 모습을 확인할 수 있었다. 시뮬레이터가 오디오 입력을 지원하니 아마도 테스트용 앱 개발을 통해서도 입력을 지원하지 않을까 싶다. 나머지 가속도, 근접, 조도 센서와 같은 부분은 당연히 지원하지 않을 것으로 보인다. 기압계(barometer)도 적혀있는데, 아이폰에 운동량 측정을 위해 아이폰6부터 들어간 센서라고 한다. 해당 센서를 통해 개발자는 대략적인 고도를 알아낼 수 있다고 한다. 이런 부분은 처음 알았다.

이외에도 시뮬레이터의 메뉴들을 좀 더 찾아보니 페이스아이디 지원 부분도 있었다. 맥북에는 당연하게도 페이스 아이디 센서가 없으니 일치, 불일치와 같은 조건 상황만 지원하는 것으로 보인다. 

 

그리고 정보를 찾다가 많은 분들이 마우스로만 조작해야하므로 핀치 줌인/아웃 동작을 할 수 없다고 적어놨던데, 틀린 정보다. 옵션 키를 누르면 투 포인트로 제어할 수 있다. 해당 부분은 스탠퍼드 swift 강의로 유명한 cs193p 강의에서 확인했던 기능이다. 해당 부분은 본인도 지도 관련 앱을 개발할 당시 잘 사용했던 기능이다. 

option키를 누르고 있으면 x,y축 반전으로 동작하는 하나의 포인터가 추가되고, shift를 추가로 누르게 되면 평행이동하는 포인터로 제어가 가능하다.

이상 요약하자면 시뮬레이터로 할 수 없는 것들은 다음과 같다.

하드웨어

  • 가속도, 자이로스코프센서
  • 비디오 입력(카메라)
  • 근접센서
  • 기압 센서
  • 조도센서

API

  • 애플 푸시 알림
  • 사진, 연락처, 캘린더, 리마인더 등 개인 정보 접근
  • The UIBackgroundModes key
  • 핸드오프 기능

API 측면에는 적지 않은 더 많은 기능들이 적혀있는데 하나하나 확인하기에는 시간이 걸릴 것 같으므로 천천히 알아봐야겠다.

https://www.acmicpc.net/problem/1105

 

1105번: 팔

첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

그리디 문제다. 숫자가 아닌 문자열로 접근해서 풀었다. 숫자로 접근하게 된다면 최대 범위가 0 ~ 2,000,000,000 이므로 분명 시간 초과가 일어날 것이다. 따라서 8이 나올 수 있는가에 대한 조건만 생각해서 접근해야 한다.

 

우선 자릿수의 변동이 일어나면 8이 나올 수 없다. 즉 L과 R의 자릿수를 먼저 체크해야 하고, 이후 자릿수가 같다면 어느 자리까지 제한하였는지를 확인해야 한다. 각 자릿수의 숫자가 같을 경우에만 8의 개수를 세고 각 자릿수가 달라지는 시점이 온다면 해당 숫자는 8이 아닌 수로 바꿀 수 있다는 뜻으로 접근하면 된다.

 

풀이

자릿수가 다르다면 8이 없는 구간이 생길 수밖에 없으니 0을 출력하면 된다.

자릿수가 같다면 가장 큰 자릿수부터 숫자를 비교하여 8의 개수를 세면 되는데, 서로의 숫자가 다르다면 더 이상 숫자를 셀 필요 없다.

 

정답 코드

'Problem Solving > BOJ' 카테고리의 다른 글

[3649] 로봇 프로젝트  (0) 2022.11.26
[1916] 최소비용 구하기  (0) 2022.11.25
[12015] 가장 긴 증가하는 부분 수열2  (0) 2022.11.23
[2166] 다각형의 면적  (0) 2022.11.22
[16236] 아기 상어  (0) 2022.11.21

https://www.acmicpc.net/problem/12015

 

12015번: 가장 긴 증가하는 부분 수열 2

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000)

www.acmicpc.net

dp를 통해서 풀게 되면 수열의 크기 때문에 시간 초과가 일어난다. 문제의 힌트에 이분 탐색을 이용하라고 되어있어 어느 부분에 이분 탐색을 적용할 수 있는지 고민해보았지만 다른 풀이를 확인하고 나서 알았다.

 

풀이

최장 증가수열을 담을 배열 arr을 생성 후 입력받은 수열을 순서대로 탐색하면서 해당 숫자가 배열의 마지막 숫자보다 큰 경우, 배열에 추가해주고 작은 경우, 이분 탐색을 통해 수열의 숫자보다 작은 숫자를 찾으면 해당 위치로 들어가면 된다.

주의할 점은 해당 배열은 정답 배열과 크기만 같지 원소는 다르므로 최장 증가수열을 반환하는 문제에는 오답처리를 받게 된다.

 

정답 코드

'Problem Solving > BOJ' 카테고리의 다른 글

[1916] 최소비용 구하기  (0) 2022.11.25
[1105] 팔  (0) 2022.11.24
[2166] 다각형의 면적  (0) 2022.11.22
[16236] 아기 상어  (0) 2022.11.21
[9019] DSLR  (0) 2022.11.19

https://www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.

www.acmicpc.net

기하학에 관련된 문제다. 다각형의 면적을 계산하는 방법만 안다면 쉽게 풀 수 있는 문제다.

 

풀이

https://ko.wikipedia.org/wiki/신발끈_공식

 

신발끈 공식 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 신발끈 공식(―公式)은 좌표평면 상에서 꼭짓점의 좌표를 알 때 다각형의 면적을 구할 수 있는 방법이다. 다각형의 각 꼭짓점의 좌푯값을 교차하여 곱하는 모

ko.wikipedia.org

신발끈 공식을 이용하여 풀었다. 다각형을 이루는 모든 꼭지점의 좌표를 알면 좌표를 이용해 다각형을 여러 개의 삼각형으로 쪼개 넓이를 구하는 공식이다.

다각형의 넓이 = ABS(sum1 - sum2) / 2

 

꼭지점이 시계방향 혹은 반시계 반향으로 순차적으로 주어지게 될 경우, 다음과 같이 순환하는 형태로 줄지어 격자 형태로 곱해서 나온 누적합 sum1, sum2의 차를 2로 나누면 다각형의 넓이를 구할 수 있다. 다행히도 문제에 다각형을 이루는 꼭짓점의 순서대로 입력이 되기에 입력되는 순서 그대로 배열에 담아내면 손쉽게 답을 구할 수 있다.

swift에서는 자릿수 반올림 함수가 제공되지 않으므로 원하는 자릿수에서 반올림 하기위해 직전 자릿수까지 10을 곱해준 뒤 반올림 함수 round()를 이용하였고 다시 자릿수만큼 나누어 주었다.

 

정답 코드

'Problem Solving > BOJ' 카테고리의 다른 글

[1105] 팔  (0) 2022.11.24
[12015] 가장 긴 증가하는 부분 수열2  (0) 2022.11.23
[16236] 아기 상어  (0) 2022.11.21
[9019] DSLR  (0) 2022.11.19
[9663] N-Queen  (0) 2022.11.17

해당 질문은 첫 iOS 개발 면접에서 마주했던 질문이라 기억에 강하게 남아있는 질문이다. 우선 swift 레퍼런스 문서를 보면 다음과 같이 정의를 찾을 수 있다.

Frame

The frame rectangle, which describes the view’s location and size in its superview’s coordinate system.

Bounds

The bounds rectangle, which describes the view’s location and size in its own coordinate system.

Declaration

var bounds: CGRect { get set }
 
두 개념 모두 뷰의 위치와 사이즈를 반환하는 CGRect 타입 변수이다. 
하지만 frame은 해당 뷰가 속해있는 상위 뷰의 좌표계를 기준으로 정해진 크기와 좌표이고, bounds의 경우는 자기 자신의 좌표계를 기점으로 정해진 크기와 좌표이다. 
 

What is View?

UIView

An object that manages the content for a rectangular area on the screen.

뷰가 무엇인지부터 설명하자면 사용자의 앱 위에 그려지게 되는 Label, Switch, Button들과 같은 요소들을 모두 view라고 정의한다. SwiftUI 혹은 UIKit을 통해서 생성할 수 있으며, 이러한 뷰들은 UIView라는 클래스로 생성된 객체들이다. 해당 객체들을 통해 유저와의 상호작용이 가능하다.

 

Create a View

let rect = CGRect(x: 10, y: 10, width: 100, height: 100)
let myView = UIView(frame: rect)

뷰를 생성하기 위해선 크기와 좌표가 필요하며 이러한 좌표와 크기는 CGRect라는 형태로 표현된다. 크기와 좌표가 주어지면 해당 조건에 맞게 화면 위에 그려지게 되는 것이다.

 

CGRect

A structure that contains the location and dimensions of a rectangle.

Creating Rectangle Values

init(origin: CGPoint, size: CGSize)
Creates a rectangle with the specified origin and size.
init(x: Double, y: Double, width: Double, height: Double)
Creates a rectangle with coordinates and dimensions specified as floating-point values.
init(x: Int, y: Int, width: Int, height: Int)
Creates a rectangle with coordinates and dimensions specified as integer values.
init(x: CGFloat, y: CGFloat, width: CGFloat, height: CGFloat)
Creates a rectangle with coordinates and dimensions specified as CGFloat values.

그렇다면 CGRect는 무엇일까? 위에서 얘기했듯이 뷰의 크기와 좌표계를 담는 구조체이며, 초기화하는 방법에는 여러 가지 방법이 있지만 기본적으로 CGFloat이라는 실수 형태의 자료형을 통해 크기와 좌표를 표현한다.

여기서 CG는 CoreGraphics의 약자로 그래픽 관련 즉 화면 표현에 대한 자료들은 모두 CG로 시작하는 자료형을 사용하니 알아두면 처음 보는 자료형에 대해서도 어떠한 용도로 쓰이는지 유추할 수 있다.

 

iOS의 좌표계 시스템은 뷰의 좌측 상단이 원점(0,0)이며, 화면의 수직면이 y 축이며 수평면이 x 축이다. 즉 y값이 증가하게 되면 아래로 이동하고 x값이 증가하게 되면 우측으로 이동하게 된다. 뷰에 관한 자세한 설명은 해당 글에 따로 정리해두었다.

 

frame과 bounds의 사이즈는 항상 똑같은가?

 

직관적으로 둘의 차이점에 대해 알 수 있는 예시이다. B가 기울어진 상태에서 frame의 경우, 상위 뷰 A의 좌표계에서 차지하는 크기는 좌표를 기준으로 사각형을 그려 표현하게 때문에 B의 frame은 Point(140, 65), Size(320, 320)이 반환되며 bounds의 경우 Point(0,0), Size(200,250)이 반환된다.

 

결론

frame : 상위 뷰의 좌표계 기준으로 좌표 원점과 크기를 반환
bounds : 자기 자신의 좌표계 기준으로 좌표 원점과 크기를 반환

https://github.com/JeaSungLEE/iOSInterviewquestions

 

GitHub - JeaSungLEE/iOSInterviewquestions: 👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리

👨🏻‍💻👩🏻‍💻iOS 면접에 나올 질문들 총 정리 . Contribute to JeaSungLEE/iOSInterviewquestions development by creating an account on GitHub.

github.com

iOS 개발 관련 지식에 대해 찾아보다가 발견한 글이다. 직무 관련 면접으로 나올 수 있는 예상 질문들이다. 답만 찾아서 외워도 되겠지만, 그렇게 얻은 지식은 또 쉽게 잊혀버리기에 글쓴이의 의도대로 직접 관련 답을 찾아보고 천천히 그에 대한 답을 내려보려고 한다.

iOS

  • Bounds 와 Frame 의 차이점을 설명하시오.
  • 실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오.
  • 앱의 콘텐츠나 데이터 자체를 저장/보관하는 특별한 객체를 무엇이라고 하는가?
  • 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?
  • App thinning에 대해서 설명하시오.
  • 앱이 시작할 때 main.c 에 있는 UIApplicationMain 함수에 의해서 생성되는 객체는 무엇인가?
  • @Main에 대해서 설명하시오.
  • 앱이 foreground에 있을 때와 background에 있을 때 어떤 제약사항이 있나요?
  • 상태 변화에 따라 다른 동작을 처리하기 위한 앱델리게이트 메서드들을 설명하시오.
  • 앱이 In-Active 상태가 되는 시나리오를 설명하시오.
  • scene delegate에 대해 설명하시오.
  • UIApplication 객체의 컨트롤러 역할은 어디에 구현해야 하는가?
  • App의 Not running, Inactive, Active, Background, Suspended에 대해 설명하시오.
  • NSOperationQueue 와 GCD Queue 의 차이점을 설명하시오.
  • GCD API 동작 방식과 필요성에 대해 설명하시오.
  • Global DispatchQueue 의 Qos 에는 어떤 종류가 있는지, 각각 어떤 의미인지 설명하시오.
  • iOS 앱을 만들고, User Interface를 구성하는 데 필수적인 프레임워크 이름은 무엇인가?
  • Foundation Kit은 무엇이고 포함되어 있는 클래스들은 어떤 것이 있는지 설명하시오.
  • Delegate란 무엇인지 설명하고, retain 되는지 안되는지 그 이유를 함께 설명하시오.
  • NotificationCenter 동작 방식과 활용 방안에 대해 설명하시오.
  • UIKit 클래스들을 다룰 때 꼭 처리해야하는 애플리케이션 쓰레드 이름은 무엇인가?
  • App Bundle의 구조와 역할에 대해 설명하시오.
  • 모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가?
  • 자신만의 Custom View를 만들려면 어떻게 해야하는지 설명하시오.
  • View 객체에 대해 설명하시오.
  • UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오.
  • UIWindow 객체의 역할은 무엇인가?
  • UINavigationController 의 역할이 무엇인지 설명하시오.
  • TableView를 동작 방식과 화면에 Cell을 출력하기 위해 최소한 구현해야 하는 DataSource 메서드를 설명하시오.
  • 하나의 View Controller 코드에서 여러 TableView Controller 역할을 해야 할 경우 어떻게 구분해서 구현해야 하는지 설명하시오.
  • setNeedsLayout와 setNeedsDisplay의 차이에 대해 설명하시오.
  • stackView의 장점과 단점에 대해서 설명하시오.
  • NSCache와 딕셔너리로 캐시를 구성했을때의 차이를 설명하시오.
  • URLSession에 대해서 설명하시오.
  • prepareForReuse에 대해서 설명하시오.
  • 다크모드를 지원하는 방법에 대해 설명하시오.
  • ViewController의 생명주기를 설명하시오.
  • TableView와 CollectionView의 차이점을 설명하시오.

Autolayout

  • 오토레이아웃을 코드로 작성하는 방법은 무엇인가? (3가지)
  • hugging, resistance에 대해서 설명하시오.
  • Intrinsic Size에 대해서 설명하시오.
  • 스토리보드를 이용했을때의 장단점을 설명하시오.
  • Safearea에 대해서 설명하시오.
  • Left Constraint 와 Leading Constraint 의 차이점을 설명하시오.

Swift

  • struct와 class와 enum의 차이를 설명하시오.
  • class의 성능을 향상 시킬수 있는 방법들을 나열해보시오.
  • Copy On Write는 어떤 방식으로 동작하는지 설명하시오.
  • Convenience init에 대해 설명하시오.
  • AnyObject에 대해 설명하시오.
  • Optional 이란 무엇인지 설명하시오.
  • Struct 가 무엇이고 어떻게 사용하는지 설명하시오.
  • Subscripts에 대해 설명하시오.
  • String은 왜 subscript로 접근이 안되는지 설명하시오.
  • instance 메서드와 class 메서드의 차이점을 설명하시오.
  • class 메서드와 static 메서드의 차이점을 설명하시오.
  • Delegate 패턴을 활용하는 경우를 예를 들어 설명하시오.
  • Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오.
  • KVO 동작 방식에 대해 설명하시오.
  • Delegates와 Notification 방식의 차이점에 대해 설명하시오.
  • 멀티 쓰레드로 동작하는 앱을 작성하고 싶을 때 고려할 수 있는 방식들을 설명하시오.
  • MVC 구조에 대해 블록 그림을 그리고, 각 역할과 흐름을 설명하시오.
  • 프로토콜이란 무엇인지 설명하시오.
  • Protocol Oriented Programming과 Object Oriented Programming의 차이점을 설명하시오.
  • Hashable이 무엇이고, Equatable을 왜 상속해야 하는지 설명하시오.
  • mutating 키워드에 대해 설명하시오.
  • 탈출 클로저에 대하여 설명하시오.
  • Extension에 대해 설명하시오.
  • Extension 내부에서 함수를 override할 수 있는지 설명하시오.
  • 접근 제어자의 종류엔 어떤게 있는지 설명하시오.
  • defer란 무엇인지 설명하시오.
  • defer가 호출되는 순서는 어떻게 되고, defer가 호출되지 않는 경우를 설명하시오.
  • property wrapper에 대해서 설명하시오.
  • Generic에 대해 설명하시오.
  • some 키워드에 대해 설명하시오.
  • Result타입에 대해 설명하시오.
  • Codable에 대하여 설명하시오.
  • Closure에 대하여 설명하시오.
  • Closure와 함수와의 관계에 대해 설명하시오.

ARC

  • ARC란 무엇인지 설명하시오.
  • Retain Count 방식에 대해 설명하시오.
  • Strong 과 Weak 참조 방식에 대해 설명하시오.
  • 순환 참조에 대하여 설명하시오.
  • 강한 순환 참조 (Strong Reference Cycle) 는 어떤 경우에 발생하는지 설명하시오.

Functional programing

  • 순수함수란 무엇인지 설명하시오.
  • 함수형 프로그래밍이 무엇인지 설명하시오.
  • 고차 함수가 무엇인지 설명하시오.
  • Swift Standard Library의 map, filter, reduce, compactMap, flatMap에 대하여 설명하시오.

Architecture

  • MVVM, MVI, Ribs, VIP 등 자신이 알고있는 아키텍쳐를 설명하시오.
  • 의존성 주입에 대하여 설명하시오.

SwiftUI

  • @State에 대해서 설명하시오.

Combine

  • PassthroughSubject에 대해서 설명하시오
  • @Published에 대해서 설명하시오
  • AnyCancellable에 대해서 설명하시오
  • sink에 대해서 설명하시오
  • throttle과 debounce의 차이점을 설명하시오.
  • Data를 Binding 하는 방법에 대해서 설명하시오.

https://www.acmicpc.net/problem/16236

 

16236번: 아기 상어

N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가

www.acmicpc.net

그래프 탐색 문제다. 너비 우선 탐색으로 풀었다. 상어의 움직임에 대해 오래 고민했던 문제다.

 

풀이

상, 좌, 우, 하 순서로 너비 우선 탐색을 수행한다. 빈 곳이거나 같은 사이즈의 물고기를 만난다면 큐에 담아 이동을 수행, 자신보다 작은 사이즈의 물고기를 만나면 해당 좌표를 다른 배열에 저장하였다.

탐색이 끝난 뒤 문제의 조건에 맞게 먹을 수 있는 물고기가 담긴 배열을 시간, x좌표, y좌표 순으로 정렬한 뒤 가장 가까운 좌표로 이동하여 해당 물고기를 먹으면 된다. 처음에는 이러한 정렬 없이 먹을 수 있는 물고기를 만나면 바로 먹어버리고 탐색을 종료했는데, 같은 거리에 있는 먹을 수 있는 물고기에 대한 조건이 안 맞아 오답이 나왔다.

탐색 함수는 상어가 이동한 좌표와 걸린 시간을 반환하게 하였다. 상어의 좌표에 이동이 없는 경우 먹을 수 있는 물고기가 없는 것으로 판단하여 반목문을 빠져나오는 것으로 코드를 작성했다.

 

정답 코드

'Problem Solving > BOJ' 카테고리의 다른 글

[12015] 가장 긴 증가하는 부분 수열2  (0) 2022.11.23
[2166] 다각형의 면적  (0) 2022.11.22
[9019] DSLR  (0) 2022.11.19
[9663] N-Queen  (0) 2022.11.17
[16234] 인구 이동  (0) 2022.11.16

https://www.acmicpc.net/problem/9019

 

9019번: DSLR

네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에

www.acmicpc.net

그래프 탐색 문제다. 너비 우선 탐색으로 해결했다.

 

풀이

0부터 9999에 해당하는 움직임을 담는 문자열 배열을 생성한 뒤, 입력되는 A부터 시작하여 너비 우선 탐색을 수행한다. D, S, L, R 연산에 해당하는 숫자를 만들고 해당 인덱스의 배열에 현재까지의 움직임에 해당 움직임 문자열을 더하여 탐색을 수행한 뒤 탐색이 끝나면 B인덱스의 배열 값을 출력하면 된다.

 

정답 코드

시간초과를 마주하여 조금 더 동작을 빠르게 해결하기 위해 27번 라인에 B번째 배열의 값이 갱신되면 탐색을 곧바로 종료하는 조건을 추가하였다.

'Problem Solving > BOJ' 카테고리의 다른 글

[2166] 다각형의 면적  (0) 2022.11.22
[16236] 아기 상어  (0) 2022.11.21
[9663] N-Queen  (0) 2022.11.17
[16234] 인구 이동  (0) 2022.11.16
[15685] 드래곤 커브  (0) 2022.11.15

+ Recent posts