애널라이저 태그는 풀이가 어떻게 해결되었는지 식별하는 데 사용해요.
이 태그는 다음과 같은 용도로 사용할 수 있어요:
태그는 <category>:<thing> 형식으로 되어 있는 문자열이에요.
네 가지 범주를 지원하며, 가장 높은 수준에서 가장 낮은 수준 순으로 나열하면 다음과 같아요:
| Category | Description | Specificity | Examples |
|---|---|---|---|
paradigm |
프로그래밍 패러다임 | 매우 높은 수준이며 트랙에 특화되지 않음 |
imperative, functional
|
technique |
사용 중인 기법 | 높은 수준이며 대부분 트랙에 특화되지 않음 |
recursion, immutability
|
construct |
언어 구성 요소 | 많은 것이 트랙에 특화되지 않음 |
bitwise-and, for-loop
|
uses |
타입이나 메서드처럼 언어에 특화된 사용법 | 낮은 수준이며 트랙에 특화됨 |
DateTime.add_seconds, IEnumerable
|
태그 예시는 다음과 같아요:
paradigm:functionaltechnique:recursionconstruct:bitwise-anduses:DateTime.add_seconds트랙에서 풀이에 자유롭게 태그를 붙일 수 있지만, 가능하면 아래에 나열한 자주 사용하는 태그를 사용하는 것을 권장해요. 공통된 태그 집합을 사용하면 트랙 간 풀이 연결처럼 멋진 기능을 만들 수 있어요.
| Tag | Description |
|---|---|
paradigm:array |
배열 프로그래밍을 사용해요. |
paradigm:declarative |
선언형 프로그래밍을 사용해요. |
paradigm:functional |
함수형 프로그래밍을 사용해요. |
paradigm:generic |
제네릭 프로그래밍을 사용해요. |
paradigm:imperative |
명령형 프로그래밍을 사용해요. |
paradigm:logic |
논리 프로그래밍을 사용해요. |
paradigm:meta |
메타프로그래밍을 사용해요. |
paradigm:object-oriented |
객체 지향 프로그래밍을 사용해요. |
paradigm:procedural |
절차적 프로그래밍을 사용해요. |
paradigm:reflective |
리플렉션 프로그래밍을 사용해요. |
paradigm:stack-oriented |
스택 지향 프로그래밍을 사용해요. |
| Tag | Description |
|---|---|
technique:bit-manipulation |
비트를 조작해요. 보통 비트 연산자(예: AND, XOR, 왼쪽 시프트)를 사용해요 |
technique:bit-shifting |
숫자의 비트를 시프트해요 |
technique:boolean-logic |
불리언 논리(AND, OR, NOT)를 수행해요 |
technique:composition |
합성을 사용해요 |
technique:concurrency |
코드를 동시에 실행해요 |
technique:enumeration |
값을 열거해요 |
technique:error-handling |
오류를 처리해요 |
technique:exceptions |
예외를 잡거나 던져요 |
technique:function-composition |
함수 합성을 사용해요 |
technique:generator |
제너레이터를 사용해요 |
technique:higher-order-functions |
고차 함수를 사용해요 |
technique:immutability |
불변성을 사용해요 |
technique:immutable-collection |
내용이 불변인 컬렉션을 사용해요 |
technique:inheritance |
상속을 사용해요 |
technique:laziness |
값을 필요할 때만 지연해서 만들어요 |
technique:locks |
자원에 대한 독점적 접근을 위해 잠금을 사용해요 |
technique:looping |
루프를 사용해요 |
technique:math |
수학 연산을 사용해요 |
technique:memory-management |
메모리를 관리해요 |
technique:ordering |
데이터에 순서를 부여해요 |
technique:parallelism |
코드를 병렬로 실행해요 |
technique:parser |
데이터를 파싱해요 |
technique:pointers |
포인터를 사용해요 |
technique:randomness |
무작위성을 사용해요 |
technique:recursion |
재귀를 사용해요 |
technique:regular-expression |
정규 표현식을 사용해요 |
technique:short-circuiting |
불필요한 평가를 막기 위해 단축 평가를 사용해요 |
technique:sorted-collection |
원소가 항상 정렬된 컬렉션을 사용해요 |
technique:sorting |
데이터를 정렬해요 |
technique:tail-call-optimization |
효율적인 재귀를 위해 꼬리 호출 최적화를 사용해요 |
technique:type-conversion |
값을 한 타입에서 다른 타입으로 변환해요 |
technique:unsafe |
안전하지 않은 코드(예: 포인터 연산)를 사용해요 |
| Tag | Description |
|---|---|
construct:abstract-class |
추상 클래스를 정의해요 |
construct:abstract-method |
추상 메서드를 정의해요 |
construct:add-assignment |
덧셈과 대입을 결합해요 |
construct:add |
덧셈을 사용해요 |
construct:array |
배열을 사용하거나 선언해요 |
construct:assignment |
값을 변수나 이름에 대입하거나 바인딩해요 |
construct:async-await |
async/await를 사용해요 |
construct:attribute |
멤버에 메타데이터를 붙여요 |
construct:auto-implemented-property |
자동 구현 속성을 정의해요 |
construct:big-integer |
큰 정수를 사용해요 |
construct:binary-number |
이진 표기법으로 숫자를 정의해요 |
construct:bit-array |
비트 배열을 사용하거나 선언해요 |
construct:bitwise-and-assignment |
비트 AND를 대입과 결합해요 |
construct:bitwise-and |
비트 AND를 수행해요 |
construct:bitwise-left-shift-assignment |
비트 왼쪽 시프트를 대입과 결합해요 |
construct:bitwise-left-shift |
비트 왼쪽 시프트를 수행해요 |
construct:bitwise-not |
비트 NOT을 수행해요 |
construct:bitwise-or-assignment |
비트 OR을 대입과 결합해요 |
construct:bitwise-or |
비트 OR을 수행해요 |
construct:bitwise-right-shift-assignment |
비트 오른쪽 시프트를 대입과 결합해요 |
construct:bitwise-right-shift |
비트 오른쪽 시프트를 수행해요 |
construct:bitwise-xor-assignment |
비트 XOR을 대입과 결합해요 |
construct:bitwise-xor |
비트 XOR을 수행해요 |
construct:block |
문 목록을 포함하는 블록을 정의해요 |
construct:boolean |
불리언 값을 정의하거나 사용해요 |
construct:boxing |
박싱을 사용해요 |
construct:break |
루프에서 빠져나와요 |
construct:byte |
부호 없는 8비트 정수를 사용해요 |
construct:catch |
예외를 잡아요 |
construct:char |
문자를 사용해요 |
construct:checked-arithmetic |
오버플로를 검사하는 산술 연산을 사용해요 |
construct:class |
클래스를 정의해요 |
construct:collection-initializer |
초기화자를 통해 컬렉션의 값을 설정해요 |
construct:command |
명령을 정의해요 |
construct:comment |
주석을 정의해요 |
construct:comparison-chaining |
비교 호출을 연결해요 |
construct:comparison |
두 값의 상대적 순서를 비교해요 |
construct:complex-number |
복소수를 사용해요 |
construct:computed-string |
계산된 문자열을 정의해요 |
construct:concatenation |
값을 이어 붙여요 |
construct:conditional-access |
메서드에 조건부로 접근해요 |
construct:conditional-operator |
삼항 조건 연산자를 사용해요 |
construct:conditional |
코드를 조건부로 실행해요 |
construct:constant |
상수(불변) 값을 정의해요 |
construct:constructor |
생성자를 정의해요 |
construct:continue |
루프의 다음 반복으로 넘어가요 |
construct:conversion-operator |
변환 연산자를 정의해요 |
construct:copy |
값을 복사해요 |
construct:coroutine |
코루틴을 정의하거나 사용해요 |
construct:custom-attribute |
사용자 지정 특성을 정의해요 |
construct:date-time |
날짜와 시간을 함께 나타내는 값을 사용해요 |
construct:date |
날짜(시간 제외)를 나타내는 값을 사용해요 |
construct:decimal |
128비트 부동소수점 수를 사용해요 |
construct:decrement |
값을 감소시켜요 |
construct:default-interface-implementation |
인터페이스에 기본 구현을 정의해요 |
construct:default |
기본값(예: 매개변수의 기본값)을 정의해요 |
construct:destructuring |
값을 여러 부분으로 분해해요 |
construct:dictionary-comprehension |
컴프리헨션으로 딕셔너리를 만들어요 |
construct:dictionary |
딕셔너리/맵을 사용하거나 정의해요 |
construct:discard |
특별한 무시 값을 사용해요 |
construct:divide-assignment |
나눗셈과 대입을 결합해요 |
construct:divide |
나눗셈을 사용해요 |
construct:do-while-loop |
do-while문을 사용해요 |
construct:double |
64비트 부동소수점 수를 사용해요 |
construct:else |
else 분기를 정의해요 |
construct:enum |
열거형(값의 열거)을 정의하거나 사용해요 |
construct:equality |
두 값이 서로 같은지 비교해요 |
construct:error |
오류를 정의하거나 사용해요 |
construct:event |
이벤트를 정의하거나 사용해요 |
construct:exception |
예외를 정의하거나 사용해요 |
construct:explicit-conversion |
한 타입에서 다른 타입으로 명시적으로 변환해요 |
construct:explicit-import |
필요한 기능만 선택적으로 임포트해요 |
construct:exponentiation |
값의 거듭제곱을 계산해요 |
construct:expression-bodied-member |
식 본문 멤버를 정의해요 |
construct:extension-method |
확장 메서드를 정의해요 |
construct:field-access |
필드에 접근해요 |
construct:field |
필드를 정의해요 |
construct:finally |
특정 코드 블록이 항상 실행되도록 finally를 사용해요 |
construct:flags-enum |
플래그 열거형을 정의하거나 사용해요 |
construct:float |
32비트 부동소수점 수를 사용해요 |
construct:floating-point-number |
부동소수점 수를 사용해요 |
construct:for-loop |
for문을 사용해요 |
construct:foreach |
foreach문을 사용해요 |
construct:function-overloading |
함수 오버로딩을 사용해요 |
construct:function |
함수를 정의해요 |
construct:generator |
제너레이터 함수나 메서드를 정의해요 |
construct:generic-function |
하나 이상의 타입으로 매개변수화된 함수를 정의해요 |
construct:generic-method |
하나 이상의 타입으로 매개변수화된 메서드를 정의해요 |
construct:generic-type |
하나 이상의 타입으로 매개변수화된 타입을 정의해요 |
construct:getter |
게터를 정의해요 |
construct:global-function |
전역에서 사용할 수 있는 함수를 정의해요 |
construct:global-variable |
전역에서 사용할 수 있는 변수를 정의해요 |
construct:header |
헤더 파일을 정의해요 |
construct:hexadecimal-number |
16진수 표기법으로 숫자를 정의해요 |
construct:if |
if문을 사용해요 |
construct:implicit-conversion |
한 타입에서 다른 타입으로 암시적으로 변환해요 |
construct:implicit-loop |
값 컬렉션을 암시적으로 반복해요 |
construct:implicit-return |
값을 암시적으로 반환해요 |
construct:import |
다른 곳(예: 네임스페이스나 모듈)에 구현된 기능을 임포트해요 |
construct:increment |
값을 증가시켜요 |
construct:index-operator |
객체를 인덱싱하기 위한 연산자를 정의해요 |
construct:indexer |
인덱서를 정의하거나 사용해요 |
construct:indexing |
인덱스로 값에 접근해요 |
construct:inequality |
두 값이 서로 다른지 비교해요 |
construct:infix-operator |
중위 연산자를 정의해요 |
construct:initialization |
생성 후 객체를 초기화해요 |
construct:initializer-list |
객체 필드의 값을 초기화해요 |
construct:initializer |
객체를 초기화해요 |
construct:instance |
타입의 인스턴스를 만들거나 사용해요 |
construct:instantiation |
타입의 인스턴스를 만들어요 |
construct:int |
부호 있는 32비트 정수를 사용해요 |
construct:integral-number |
정수를 사용해요 |
construct:interface |
인터페이스를 정의해요 |
construct:invocation |
메서드/함수를 호출해요 |
construct:iterator |
반복할 수 있는 함수나 메서드를 정의해요 |
construct:jagged-array |
가변 배열(배열의 배열)을 사용해요 |
construct:lambda |
람다(익명 함수)를 정의해요 |
construct:linked-list |
연결 리스트를 사용해요 |
construct:linq |
LINQ를 사용해요 |
construct:list-comprehension |
컴프리헨션으로 배열을 만들어요 |
construct:list |
배열을 사용해요 |
construct:local-function |
로컬 함수를 정의해요 |
construct:local-variable |
로컬 변수를 정의해요 |
construct:lock |
잠금을 사용해요 |
construct:logical-and |
논리 AND를 수행해요 |
construct:logical-not |
논리 NOT을 수행해요 |
construct:logical-or |
논리 OR을 수행해요 |
construct:long |
부호 있는 64비트 정수를 사용해요 |
construct:loop |
루프를 정의해요 |
construct:macro |
매크로를 정의해요 |
construct:membership-test |
값이 다른 값에 속하는지 검사해요 |
construct:metatable |
메타테이블을 정의해요 |
construct:method-chaining |
여러 메서드 호출을 연결해요 |
construct:method-overloading |
메서드 오버로딩을 사용해요 |
construct:method-override |
오버라이드된 메서드를 정의해요 |
construct:method |
메서드를 정의해요 |
construct:module |
모듈(코드의 묶음)을 정의해요 |
construct:modulo-assignment |
나머지 연산을 대입과 결합해요 |
construct:modulo |
나눗셈의 나머지를 사용해요 |
construct:multi-dimensional-array |
다차원 배열을 사용해요 |
construct:multiline-string |
여러 줄 문자열을 정의해요 |
construct:multiple-assignment |
여러 값을 한 번에 대입해요 |
construct:multiple-dispatch |
다중 디스패치를 사용해요 |
construct:multiply-assignment |
곱셈과 대입을 결합해요 |
construct:multiply |
곱셈을 사용해요 |
construct:named-argument |
이름으로 인자를 전달해요 |
construct:namespace |
네임스페이스(코드의 묶음)를 정의해요 |
construct:nested-function |
중첩 함수를 정의해요 |
construct:nested-type |
중첩 타입을 정의해요 |
construct:nesting |
중첩을 사용해요 |
construct:nint |
플랫폼별 부호 있는 정수(32비트 또는 64비트)를 사용해요 |
construct:nuint |
플랫폼별 부호 없는 정수(32비트 또는 64비트)를 사용해요 |
construct:null |
값이 없음을 나타내기 위해 null/nil을 사용해요 |
construct:nullability |
null/nil 값을 다뤄요 |
construct:number |
숫자(부호 있음 또는 부호 없음)를 사용해요 |
construct:object-initializer |
초기화자를 통해 객체의 값을 설정해요 |
construct:octal-number |
8진수 표기법으로 숫자를 정의해요 |
construct:operator-overloading |
연산자 오버로딩을 사용해요 |
construct:option |
옵션 타입을 사용해요 |
construct:optional-parameter |
선택적 매개변수를 정의해요 |
construct:overflow |
산술 오버플로를 사용해요 |
construct:parameter |
매개변수를 정의해요 |
construct:parenthesized-expression |
식을 괄호로 감싸요 |
construct:pattern-matching |
패턴 매칭을 사용해요 |
construct:pattern |
패턴 매칭에 사용되는 패턴을 정의해요 |
construct:pipe-backward |
역방향 파이프를 사용해요 |
construct:pipe-forward |
정방향 파이프를 사용해요 |
construct:pipeline |
파이프라인을 정의해요 |
construct:point-free |
함수가 다루는 인자를 명시하지 않고 함수를 정의해요 |
construct:pointer |
포인터를 사용해요 |
construct:postfix-decrement |
후위 표기법으로 값을 감소시켜요 |
construct:postfix-increment |
후위 표기법으로 값을 증가시켜요 |
construct:prefix-decrement |
전위 표기법으로 값을 감소시켜요 |
construct:prefix-increment |
전위 표기법으로 값을 증가시켜요 |
construct:print |
값을 콘솔에 출력해요 |
construct:property |
속성(getter/setter)을 정의해요 |
construct:query-expression |
식을 통해 데이터를 쿼리해요 |
construct:queue |
큐를 사용해요 |
construct:range |
범위를 정의해요 |
construct:read-only |
읽기 전용 값을 정의해요 |
construct:record |
레코드를 정의해요 |
construct:regular-expression |
정규 표현식을 정의하거나 사용해요 |
construct:result |
결과 타입을 사용해요 |
construct:return-type |
함수나 메서드의 반환 타입을 정의해요 |
construct:return |
함수/메서드에서 반환해요 |
construct:sbyte |
부호 있는 8비트 정수를 사용해요 |
construct:scientific-notation-number |
과학적 표기법으로 숫자를 정의해요 |
construct:set-comprehension |
컴프리헨션으로 집합을 만들어요 |
construct:set |
집합을 사용해요 |
construct:setter |
세터를 정의해요 |
construct:short |
부호 있는 16비트 정수를 사용해요 |
construct:slice |
슬라이스를 사용해요 |
construct:stack |
스택을 사용해요 |
construct:static-field |
정적 필드를 정의해요 |
construct:static-method |
정적 메서드를 정의해요 |
construct:string-formatting |
형식 문자열을 통해 문자열을 만들어요 |
construct:string-interpolation |
보간 문자열을 정의해요 |
construct:string |
문자열을 정의해요 |
construct:struct |
구조체를 정의해요 |
construct:subtract-assignment |
뺄셈과 대입을 결합해요 |
construct:subtract |
뺄셈을 사용해요 |
construct:sum-type |
합 타입을 정의해요 |
construct:switch |
switch문을 사용해요 |
construct:table |
테이블을 정의해요 |
construct:template-alias |
템플릿의 별칭을 정의해요 |
construct:template-parameter |
템플릿 매개변수를 정의해요 |
construct:template |
템플릿을 정의해요 |
construct:throw |
예외를 던져요 |
construct:time |
시간을 나타내는 객체를 사용해요 |
construct:try |
예외를 명시적으로 처리해요 |
construct:tuple |
튜플을 사용해요 |
construct:type-alias |
타입의 별칭을 정의해요 |
construct:type-conversion |
값을 다른 타입으로 변환(캐스트)해요 |
construct:type-extension |
타입에 새로운 기능을 추가해요 |
construct:type-inference |
값/함수의 타입을 자동으로 추론해요 |
construct:type-test |
값이 특정 타입인지 검사해요 |
construct:uint |
부호 없는 32비트 정수를 사용해요 |
construct:ulong |
부호 없는 64비트 정수를 사용해요 |
construct:unary-minus |
단항 마이너스를 사용해요 |
construct:unary-plus |
단항 플러스를 사용해요 |
construct:underscored-number |
자릿수 구분 기호로 밑줄을 넣은 숫자를 사용해요 |
construct:union-type |
유니온 타입을 정의해요 |
construct:user-defined-exception |
사용자 정의 예외를 정의해요 |
construct:ushort |
부호 없는 16비트 정수를 사용해요 |
construct:using-directive |
다른 파일의 코드를 사용해요 |
construct:using-statement |
using 문을 통해 값을 할당하고 해제해요 |
construct:varargs |
0개 이상의 값을 전달할 수 있는 매개변수를 정의해요 |
construct:variable |
변수를 선언해요 |
construct:vector |
벡터를 사용해요 |
construct:verbatim-string |
이스케이프 시퀀스가 없는 축자 문자열을 사용해요 |
construct:virtual-method |
가상 메서드를 정의해요 |
construct:visibility-modifiers |
구성 요소(예: 메서드나 클래스)의 가시성을 지정해요 |
construct:while-loop |
while문을 사용해요 |
construct:yield |
루프에서 값을 지연해서 산출해요 |
이 범주는 언어에 특화되어 있어, 여기에 자주 사용하는 태그는 없어요.