WO2024071455A1 - 과제에 대한 솔루션의 제공 - Google Patents

과제에 대한 솔루션의 제공 Download PDF

Info

Publication number
WO2024071455A1
WO2024071455A1 PCT/KR2022/014334 KR2022014334W WO2024071455A1 WO 2024071455 A1 WO2024071455 A1 WO 2024071455A1 KR 2022014334 W KR2022014334 W KR 2022014334W WO 2024071455 A1 WO2024071455 A1 WO 2024071455A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
user
task
source code
specific
Prior art date
Application number
PCT/KR2022/014334
Other languages
English (en)
French (fr)
Inventor
양영주
Original Assignee
라쿠텐 심포니 코리아 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 라쿠텐 심포니 코리아 주식회사 filed Critical 라쿠텐 심포니 코리아 주식회사
Priority to PCT/KR2022/014334 priority Critical patent/WO2024071455A1/ko
Publication of WO2024071455A1 publication Critical patent/WO2024071455A1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/10Requirements analysis; Specification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling

Definitions

  • This disclosure relates to technology for providing solutions to problems.
  • developers can use offline development tools or online compilers to compile the source code of a specific application, verify that the application works well, and then create the application. At this time, other users who wish to use the application can use the application based on the uploaded executable file only after the developer uploads the executable file generated as a result of compiling the source code online.
  • the technical task is to provide a solution to a task specified by a user.
  • the technical task is to enable a user to obtain source code that solves a specific problem from another user.
  • the technical task is to enable users to obtain source code that solves a specific problem according to various source code languages.
  • the technical task is to enable a user to obtain source code that solves a specific problem that requires the creation of source code including non-public information.
  • a device that can provide a solution to a problem may be provided.
  • a device includes a communication circuit for communicating with at least one external device, one or more processors, and instructions stored therein that cause the one or more processors to perform an operation when executed by the one or more processors. It includes one or more memories, wherein the one or more processors acquire task information indicating a specific task requiring creation of source code from a device of a first user among a plurality of users, and store the task information. Matching a second user among the plurality of users, obtaining solution information including a specific source code written to solve the specific problem from the second user's device, and sending the solution information to the first user. It may be configured to be delivered to the user's device, and the task information may include at least one predetermined condition for verifying whether the specific task has been solved.
  • a device that can provide a solution to a problem may be provided.
  • a device includes a communication circuit for communicating with at least one external device, one or more processors, and one or more memories storing instructions that cause the one or more processors to perform an operation when executed by the one or more processors. Includes, wherein the one or more memories store at least one task-solution information pair including task information and at least one solution information for the task information, and the one or more processors store the first user's Obtain task information indicating a specific task requiring creation of a source code from a device, and create a specific source code to solve the specific task based on the at least one task-solution information pair stored in the memory. It may be configured to determine solution information including code and transmit the solution information to the first user's device, wherein the task information includes at least one predetermined condition for verifying whether the specific task is solved. can do.
  • a method that can provide a solution to a problem may be provided.
  • a method according to one aspect of the present disclosure is performed by an electronic device including a communication circuit for communicating with at least one external device, one or more processors, and one or more memories storing at least one instruction to be executed by the one or more processors.
  • the method includes obtaining task information indicating a specific task requiring creation of source code from a device of a first user among a plurality of users; matching the task information with a second user among the plurality of users; Obtaining solution information including specific source code written to solve the specific problem from the second user's device; and transmitting the solution information to the first user's device, wherein the task information may include at least one predetermined condition for verifying whether the specific task has been solved.
  • a user can obtain source code that solves a specific problem requiring creation of source code from another user.
  • a user can obtain source code that solves a specific problem requiring the creation of source code according to various source code languages.
  • a user can obtain source code that solves a specific problem that requires the creation of source code, including non-public information.
  • FIG. 1 is a diagram illustrating a system including a server, a user terminal, and a communication network according to an embodiment of the present disclosure.
  • FIG. 2 is a block diagram of a server according to an embodiment of the content disclosed herein.
  • Figure 3 is a block diagram of a user terminal according to an embodiment of the content disclosed in this specification.
  • Figure 4 is a flowchart of an operation in which a server obtains task information from a user and then delivers solution information for a specific task indicated by the task information to the user according to an embodiment of the present disclosure.
  • Figure 5 is a flowchart of an operation in which a server matches task information obtained from one user with at least one user among a plurality of users according to an embodiment of the present disclosure.
  • Figure 6 is a flowchart of an operation in which a server obtains solution information from each of two or more user terminals for one single task information according to an embodiment of the present disclosure.
  • Figure 7 is a flowchart of an operation in which a server obtains task information from a user and then delivers solution information for a specific task indicated by the task information to the user according to another embodiment of the present disclosure.
  • A, B, and C As used herein, “A, B, and C,” “A, B, or C,” “A, B, and/or C,” or “at least one of A, B, and C,” “A, B , or at least one of C,” “at least one of A, B, and/or C,” “at least one selected from A, B, and C,” “at least one selected from A, B, or C,” “A Expressions such as “at least one selected from , B, and/or C” may mean each listed item or all possible combinations of the listed items.
  • “at least one selected from A and B” means: (1) A, (2) at least one of A, (3) B, (4) at least one of B, (5) at least one of A and B It may refer to at least one of, (6) at least one of A and B, (7) at least one of B and A, and (8) both A and B.
  • the expression "based on” is used to describe one or more factors affecting the decision, act of judgment, or action described in the phrase or sentence containing the expression, and the expression refers to the It does not exclude additional factors that may influence the decision, act or action of judgment.
  • a component e.g., a first component
  • another component e.g., a second component
  • the expression that a component is “connected” or “connected” to another component means that the component is It may mean being connected or connected not only directly to another component, but also through another new component (e.g., a third component).
  • the expression “configured to” means “set to,” “having the ability to,” “changed to,” “made to,” and “capable of,” depending on the context. It can have meanings such as “possible.”
  • the expression is not limited to the meaning of "specially designed in hardware," and for example, a processor configured to perform a specific operation is a general-purpose processor capable of performing that specific operation by executing software. It can mean.
  • FIG. 1 is a diagram illustrating a system including a server 100, a user terminal 200, and a communication network 300 according to an embodiment of the present disclosure.
  • the server 100 and the user terminal 200 can send or receive information to each other through the communication network 300 according to the solution providing technology disclosed in this specification.
  • the server 100 may be an electronic device of a service provider for solution provision or mediation.
  • a service provider may be an operator of a service that provides content according to the content display technology disclosed in this specification.
  • the server 100 is an electronic device that transmits information or provides services to the user terminal 200 connected by wire or wirelessly, and may be, for example, an application server, proxy server, cloud server, etc.
  • the user terminal 200 may indicate one or more user terminals or a set of two or more user terminals.
  • each user terminal is a first user terminal 200-1 and a second user terminal 200-2.
  • ... may be referred to as the nth user terminal (200-n) (n is a natural number of 2 or more).
  • the user terminal 200 may be a user terminal that uses the above-described content provision service.
  • the user terminal 200 may be, for example, a smartphone, tablet computer, personal computer (PC), mobile phone, personal digital assistant (PDA), audio player, or wearable device. It may be at least one of (Wearable Device).
  • the term “device” is a term to refer to the device that is the subject of description
  • the term “external device” is a term used to refer to the device that is the subject of description. From this point of view, each can be used as a term to refer to a device that exists externally.
  • the server 100 when the server 100 is described as a “device,” the user terminal 200 may be called an “external device” from the perspective of the server 100.
  • the server 100 may be called an “external device” from the perspective of the user terminal 200.
  • a specific user's device e.g., a first user's device
  • a specific user's user terminal e.g., a first user's user terminal
  • a first user terminal e.g., a first user terminal
  • the communication network 300 may include both a wired or wireless communication network.
  • the communication network 300 can enable data to be exchanged between the server 100 and the user terminal 200.
  • the wired communication network may include, for example, a communication network based on USB (Universal Serial Bus), HDMI (High Definition Multimedia Interface), RS-232 (Recommended Standard-232), or POTS (Plain Old Telephone Service). .
  • Wireless communication networks include, for example, enhanced Mobile Broadband (eMBB), Ultra Reliable Low-Latency Communications (URLLC), Massive Machine Type Communications (MMTC), Long-Term Evolution (LTE), LTE Advance (LTE-A), and NR ( New Radio), UMTS (Universal Mobile Telecommunications System), GSM (Global System for Mobile communications), CDMA (Code Division Multiple Access), WCDMA (Wideband CDMA), WiBro (Wireless Broadband), WiFi (Wireless Fidelity), Bluetooth ), NFC (Near Field Communication), GPS (Global Positioning System), or GNSS (Global Navigation Satellite System).
  • the communication network 300 of this specification is not limited to the examples described above, and may include various types of communication networks that allow data to be exchanged between a plurality of subjects or devices without limitation.
  • FIG. 2 is a block diagram of the server 100 according to an embodiment of the content disclosed herein.
  • the server 100 may include one or more processors 110, communication circuits 120, or memory 130 as components. In some embodiments, at least one of these components of server 100 may be omitted, or other components may be added to server 100. In some embodiments, additionally or alternatively, some components may be integrated and implemented, or may be implemented as a single or plural entity. At least some of the components inside or outside the server 100 are connected to each other through a bus, General Purpose Input/Output (GPIO), Serial Peripheral Interface (SPI), or Mobile Industry Processor Interface (MIPI), etc. to exchange data. Alternatively, signals can be given or received.
  • GPIO General Purpose Input/Output
  • SPI Serial Peripheral Interface
  • MIPI Mobile Industry Processor Interface
  • processor 110 may be referred to as processor 110.
  • the term processor 110 may refer to a set of one or more processors, unless the context clearly expresses otherwise.
  • the processor 110 may control at least one component of the server 100 connected to the processor 110 by running software (eg, commands, programs, etc.). Additionally, the processor 110 may perform various operations such as calculation, processing, data generation or processing. Additionally, the processor 110 may load data, etc. from the memory 130 or store it in the memory 130 .
  • the communication circuit 120 may perform wireless or wired communication between the server 100 and another device (eg, the user terminal 200 or another server).
  • the communication circuit 120 may be used for wireless communication such as eMBB, URLLLC, MMTC, LTE, LTE-A, NR, UMTS, GSM, CDMA, WCDMA, WiBro, WiFi, Bluetooth, NFC, GPS or GNSS. can be performed.
  • the communication circuit 120 may be wired according to a method such as USB (Universal Serial Bus), HDMI (High Definition Multimedia Interface), RS-232 (Recommended Standard-232), or POTS (Plain Old Telephone Service). Communication can be performed.
  • Memory 130 can store various data. Data stored in the memory 130 is data acquired, processed, or used by at least one component of the server 100, and may include software (eg, commands, programs, etc.). Memory 130 may include volatile or non-volatile memory. The term memory 130 may refer to a set of one or more memories, unless the context clearly expresses otherwise. As used herein, the expression “a set of instructions stored in the memory 130” or “a program stored in the memory 130” refers to an operating system, application, or application for controlling the resources of the server 100. It may be used to refer to middleware that provides various functions to an application so that it can utilize the resources of the server 100. In one embodiment, when the processor 110 performs a specific operation, the memory 130 may store instructions performed by the processor 110 and corresponding to the specific operation.
  • the server 100 may transmit data according to an operation result of the processor 110, data received by the communication circuit 120, or data stored in the memory 130 to an external device.
  • An external device may be a device for outputting (displaying or displaying) received data.
  • the external device may be, for example, the user terminal 200.
  • FIG. 3 is a block diagram of a user terminal 200 according to an embodiment of the content disclosed in this specification.
  • the user terminal 200 may include one or more processors 210, communication circuits 220, or memory 230 as components. Additionally, the user terminal 200 may further include at least one of an input unit 240 or an output unit 250.
  • the processor 210 may control at least one component of the user terminal 200 connected to the processor 110 by running software (eg, commands, programs, etc.). Additionally, the processor 210 may perform various operations such as calculation, processing, data generation or processing. Additionally, the processor 210 may load data, etc. from the memory 230 or store it in the memory 230 .
  • software eg, commands, programs, etc.
  • the processor 210 may perform various operations such as calculation, processing, data generation or processing. Additionally, the processor 210 may load data, etc. from the memory 230 or store it in the memory 230 .
  • the communication circuit 220 may perform wireless or wired communication between the user terminal 200 and another device (eg, the server 100 or another user terminal).
  • the communication circuit 220 may be used for wireless communication such as eMBB, URLLLC, MMTC, LTE, LTE-A, NR, UMTS, GSM, CDMA, WCDMA, WiBro, WiFi, Bluetooth, NFC, GPS or GNSS. can be performed.
  • the communication circuit 220 may perform wired communication using USB, HDMI, RS-232, or POTS.
  • Memory 230 can store various data. Data stored in the memory 230 is data acquired, processed, or used by at least one component of the user terminal 200, and may include software (e.g., commands, programs, etc.) . Memory 230 may include volatile or non-volatile memory. The term memory 230 may refer to a set of one or more memories, unless the context clearly expresses otherwise. As used herein, the expression “a set of instructions stored in the memory 230” or “a program stored in the memory 230” refers to an operating system, an application, or an operating system for controlling the resources of the user terminal 200. It may be used to refer to middleware that provides various functions to an application so that the application can utilize the resources of the user terminal 200. In one embodiment, when the processor 210 performs a specific operation, the memory 230 may store instructions performed by the processor 210 and corresponding to the specific operation.
  • the user terminal 200 may further include an input unit 240.
  • the input unit 240 may be a component that transmits data received from the outside to at least one component included in the user terminal 200.
  • the input unit 240 may include a mouse, keyboard, or touch pad.
  • the user terminal 200 may further include an output unit 250.
  • the output unit 250 may display (output) information processed in the user terminal 200 or transmit (send) it to the outside.
  • the output unit 250 may visually display information processed in the user terminal 200.
  • the output unit 250 may display User Interface (UI) information or Graphic User Interface (GUI) information.
  • the output unit 250 includes a liquid crystal display (LCD), a thin film transistor-liquid crystal display (TFT-LCD), an organic light-emitting diode (OLED), It may include at least one of a flexible display, a 3D display, and an electronic ink display.
  • the output unit 250 may audibly display information processed in the user terminal 200.
  • the output unit 250 can display audio data following any audio file format (eg, MP3, FLAC, WAV, etc.) through an audio device.
  • the output unit 250 may include at least one of a speaker, a headset, and headphones.
  • FIG. 4 is a flowchart of an operation in which the server 100 obtains task information from a user and then delivers solution information for a specific task indicated by the task information to the user according to an embodiment of the present disclosure.
  • the processor 110 may obtain task information indicating a specific task requiring the creation of source code from the user terminal of one user (hereinafter also referred to as “the first user”) among a plurality of users. There is (S410).
  • an assignment may refer to a problem that can be solved by a computing device executing source code.
  • source code is code before being converted or compiled by a computing device, and may be a document or a set of characters written according to the grammar of a specific language.
  • the type of language of source code may include Python, C, C++, Java, etc.
  • task information may include at least one piece of information indicating a specific task.
  • task information may include at least one of a description, a variable type of an input value and/or an output value, and constraints on an input value and/or an output value.
  • Explanatory sentences included in the task information are sentences that explain the task, for example, "A function that takes two integers as input and outputs the sum of two integers" or "A function that takes two sentences as input and outputs the common string of the two sentences.” It may be a sentence containing description of the same content.
  • the variable type included in the task information is a value for defining the variable type of the input value or output value and may be, for example, Integer, Float, Character, String, etc.
  • Constraints included in task information are conditions that can be set depending on the variable type of the input value or output value. For example, if the variable type of the input value is an integer, the constraint condition for the input value is "greater than 0 but less than 10000", etc.
  • the constraint condition of the input value can be set to "length of string 10 or more.”
  • the task information is ⁇ "Description": "Do subtraction for given 2 integer numbers”
  • First input value variable type “Integer”
  • Second input value variable type “Integer”
  • Output value variable type “Integer”
  • Constraints on first input value “Integer greater than 0 and less than 100000”
  • Constraints for ": "an integer greater than 0 and less than 100000” ⁇ can be illustratively expressed as follows.
  • the task information may further include at least one predetermined condition (hereinafter also referred to as “validation condition”) for validating whether a specific task has been solved.
  • the verification condition may be a condition in which whether or not the condition is satisfied is determined based on an input value and an expected output value for the input value. For example, it can be assumed that a specific task indicated by task information is “creating a function that tells whether the string given as the second argument is included in the string given as the first argument.”
  • one verification condition may be a verification condition in which the input values are set to “abcdefg” and “abc” and the expected output value for them is set to “true”.
  • another verification condition may be a verification condition in which the input values are set to "abcdefg" and "" (i.e., an empty string) and the expected output value therefor is set to "false". Also, for example, it can be assumed that the specific task indicated by the task information is "creating a function that returns the difference between the integer given as the first argument and the integer given as the second argument.” In this case, one verification condition may be a verification condition in which the input values are set to “10” and “4” and the expected output value for them is set to “6”.
  • another verification condition included in the at least one verification condition may be a verification condition in which the input values are set to “10000” and “10000” and the expected output value for the input values is set to “0”.
  • the task information may further include language information indicating the language of the source code for which writing is requested.
  • Language information indicating the language of the source code may include a string for the name of the language.
  • the processor 110 may match the task information obtained in step S410 with a specific user (hereinafter also referred to as a “second user”) among the plurality of users (S420).
  • the processor 110 may match at least one user among a plurality of users with task information.
  • At least one user matching the task information may be determined by the server 100 according to one or more predetermined methods.
  • the server 100 may randomly select one of the user terminals 200 capable of communication and match the user of the selected user terminal with task information.
  • the server 100 may receive identification information (eg, user ID) of a specific user from the first user who delivered the task information and match the user with the task information.
  • the server 100 may deliver task information to the user terminal of a specific user and then match the user with the task information based on user input obtained from the user terminal of the corresponding user.
  • task information is described as matching one user (second user) among a plurality of users, but this is only an example description for explaining the present disclosure, and the task information of the present disclosure is matched with two or more users. It may be matched.
  • the processor 110 provides a solution containing a specific source code written to solve a specific task indicated by the task information from the user terminal of the user (i.e., the second user) matched with the task information obtained in step S410.
  • Information can be obtained (S430).
  • solution information may be information corresponding to specific task information.
  • solution information may include source code written to solve a specific task indicated by corresponding task information.
  • Solution information may include a binary file or an executable file (for example, an .exe file) obtained as a result of compiling the written source code.
  • the solution information includes at least one of information about the user who created the source code, the computing environment that verified the verification conditions included in the corresponding task information, or the time at which the verification conditions included in the corresponding task information were verified. More may be included.
  • the expression that task information and solution information “correspond” may be used to refer to a state in which one task information is matched to one solution information.
  • the server 100 may match specific task information and specific solution information and store the two matched information in a storage device such as the memory 130.
  • at least one solution information may correspond to one task information.
  • “task information” and “solution information” may have a one-to-many data relationship.
  • a plurality of source codes included in the plurality of solution information may be source codes written in two or more different languages.
  • a specific source code included in solution information may be a source code that satisfies at least one predetermined condition included in the solution information and the corresponding task information.
  • the specific task indicated by the task information is "Create a function that returns the difference between the integer given as the first argument and the integer given as the second argument”
  • the two verification conditions included in the task information are respectively "Input value: ( 10, 4), output value: 6" and "input value: (10000, 10000), output value: 0”.
  • the source code of the solution information corresponding to the task information may be a source code that satisfies both of the above two conditions.
  • the server 100 obtains at least one source code from the user terminal 200 and determines whether each of the acquired at least one source codes satisfies at least one verification condition. can do. Additionally, the server 100 may determine a specific source code to be included in the solution information among at least one source code obtained from the user terminal 200 based on the result of this determination. Specifically, the processor 110 compiles each source code to determine whether each of the at least one source code obtained from the specific user terminal 200 satisfies a predetermined condition (i.e., verification condition), The compilation result can be delivered to the specific user terminal 200. At this time, if at least one acquired source code is written in two or more different languages, the processor 110 may perform compilation for each language. The processor 110 may check the compilation results for each of the at least one source code obtained from the user, and determine the source code that satisfies at least one verification condition as the specific source code to be included in the solution information.
  • a predetermined condition i.e., verification condition
  • the processor 110 may transmit the solution information obtained in step S430 to the first user terminal (S440). Through this, the first user can transmit task information indicating a specific task to the server 100 and obtain solution information for solving the specific task. Additionally, the processor 110 may store data including task information and at least one solution information for the task information (hereinafter, also referred to as a “task-solution information pair”).
  • the first user can obtain source code that solves the specific task from another user by transmitting (or uploading) task information indicating a specific task requiring the creation of source code to the server 100. .
  • the processor 110 may obtain evaluation information about solution information from the first user terminal after performing step S440. That is, the first user obtains solution information for a specific task from the server 100 through the first user terminal, generates evaluation information to evaluate the quality or performance of the solution information, and sends the generated evaluation information to the server ( 100).
  • the server 100 may store evaluation information obtained from the user terminal 200 in the memory 130 .
  • the server 100 may aggregate evaluation information for each of a plurality of users.
  • the evaluation information includes an evaluation score included in a predetermined range such as “1 to 5” or “0 to 100.”
  • the server 100 may obtain an evaluation score for the solution information from the user terminal 200 and then store the evaluation score by matching it with the user who created the source code included in the solution information.
  • the server 100 may calculate the average value of one or more evaluation scores stored corresponding to each user (hereinafter, also referred to as “average evaluation score”).
  • the processor 110 may transmit category information regarding a specific task indicated by task information to the user terminal of at least one user among a plurality of users.
  • category information refers to information corresponding to each task included in a plurality of tasks as a result of classifying a plurality of tasks according to a predetermined standard, and includes at least one string indicating a specific group to which the specific task belongs. can do.
  • the expression “category information on a specific task” may be used interchangeably with expressions such as “category information corresponding to a specific task” or “category information on a specific task.”
  • a plurality of tasks are tasks related to “four arithmetic operations.” At this time, among the plurality of tasks, the tasks of the first group are “addition operations”, the tasks of the second group are “subtraction operations”, the tasks of the third group are “multiplication operations”, and the tasks of the fourth group are "division operations”.
  • one specific task among the plurality of tasks is to create a string indicating one of the "four arithmetic operations/addition operations”, “four arithmetic operations/subtraction operations”, “four arithmetic operations/multiplication operations”, and “four arithmetic operations/division operations”. It may correspond to the included category information.
  • the plurality of assignments are assignments related to “homework for department B at university A.”
  • the tasks of the first group are “1st year course”
  • the tasks of the second group are “2nd year course”
  • the tasks of the third group are “3rd year course”
  • the tasks of the fourth group are " Each can be classified as a “4-year course.”
  • one specific assignment is “Homework for Department B of University A/1st year course”, “Homework for Department B of University A/2nd year course”, “Homework for Department B of University A/3rd year course”, and “A University It may correspond to category information containing a string indicating one of “University B Department Homework/4th Year Course”.
  • the category information of a specific task may include strings indicating two or more different groups.
  • a specific task may correspond to category information containing strings indicating different groups, such as “programming language/Python” and “four arithmetic operations/subtraction operations.”
  • the server 100 may obtain category information regarding a specific task from the first user terminal.
  • the first user transmits category information to the server 100 through the input unit 240 of the user terminal, and accordingly, the server 100 can obtain category information regarding the specific task indicated by the task information. there is.
  • the server 100 may determine category information regarding a specific task by performing a predetermined operation based on at least one previously acquired task information.
  • the server 100 compares a keyword set of task information (hereinafter also referred to as “target task information”) that is the subject of determination of category information with a keyword set of at least one previously obtained task information, and According to the comparison result, category information of a specific task indicated by the target task information can be determined.
  • At least one previously acquired task information or a set of keywords for each of the at least one task information may be stored in the memory 130.
  • a “keyword set” is extracted by applying a predetermined keyword extraction method (e.g., TextRank, TF-IDF, word embedding-based keyword extraction method, artificial neural network-based natural language processing method, etc.) to a set of documents or characters. It can refer to a set or group of keywords. For example, for the sentence “Please create a function that takes two variables as input and returns the difference value,” the set of keywords extracted according to a given keyword extraction method is [“variable”, “2”, “ It can be exemplified as “difference value”, “function”].
  • a predetermined keyword extraction method e.g., TextRank, TF-IDF, word embedding-based keyword extraction method, artificial neural network-based natural language processing method, etc.
  • the server 100 may determine category information of a specific task indicated by the target task information based on similarity between the keyword set of the target task information and each keyword set of at least one previously acquired task information. Similarity between keyword sets can be determined, for example, based on whether a critical number or more of the same keywords are included in the two keyword sets.
  • the set of keywords extracted from the first task information is ["A”, “B”, “C”, “D”]
  • the set of keywords extracted from the second task information is ["A”, “B”, “C”, “E”]
  • the keyword set of the first task information and the keyword set of the second task information include 3 keywords (i.e., " A”, "B", and "C") are included in the same way and are more than the critical number of three, so the keyword set of the first task information and the keyword set of the second task information can be determined to be similar to each other.
  • the server 100 sets the other task based on the category information of one of the first task information and the second task information.
  • the category information of the information can be determined. For example, assuming that the first task information is target task information and the second task information refers to one previously acquired task information, the server 100 uses the category information of the second task information to create the first task information. You can set or create category information for assignment information.
  • FIG. 5 is a flowchart of an operation in which the server 100 matches task information obtained from one user with at least one user among a plurality of users according to an embodiment of the present disclosure. Each step of the matching method described with reference to FIG. 5 may be included in step S420 of FIG. 4.
  • the processor 110 may transmit task information obtained from the first user terminal to the user terminal of at least one user among the plurality of users (S510). In one embodiment, the processor 110 transmits task information among all users, and the processor 110 transmits task information to all user terminals 200 capable of communicating with the server 100, thereby transmitting task information to at least one of a plurality of users. Task information can be delivered to the user terminal of the user. In another embodiment, the processor 110 may determine a plurality of users to receive task information according to a predetermined method and deliver the task information to the determined plurality of users.
  • the plurality of users may be users that satisfy conditions regarding the compensation amount.
  • the processor 110 may obtain compensation information indicating the compensation amount from the first user terminal.
  • the compensation amount according to the present disclosure may refer to the amount that a user can receive when a user solves a specific task indicated by task information.
  • the compensation amount may be determined by the first user in consideration of the difficulty of solving the task indicated by the task information, the time required, etc.
  • the server 100 may store conditions regarding the compensation amount for each of a plurality of users in the memory 130.
  • the reward amount indicated by the reward information transmitted along with the task information from the first user is “$100.”
  • a plurality of users who receive the task information obtained from the first user by the server 100 are among all users whose conditions regarding the compensation amount allow “$100” (for example, “the compensation amount is $20 or more”). " or "compensation amount of $100 or more”).
  • the plurality of users may be developers who can use a language indicated by language information included in the task information.
  • the task information may include language information indicating the language of the source code
  • a plurality of users may register the types of languages they can use on the server 100. For example, assume that the language of the source code indicated by the language information included in the task information transmitted from the first user is “Python.” At this time, a plurality of users who receive task information obtained from the first user by the server 100 may be users whose language includes “Python” among all users.
  • the plurality of users may be users who satisfy the conditions for evaluation information.
  • the processor 110 may obtain conditions for evaluation information from the first user terminal. For example, it can be assumed that the conditions for evaluation information are expressed as “rating is 4 points or more (out of 5 points)” or “rating is 90 points or more (out of 100 points).”
  • the server 100 may determine a plurality of users that satisfy the conditions for evaluation information based on the ratings of all users stored in the memory 130.
  • the processor 110 may obtain a user input for selecting task information from the user terminal of at least one user among the plurality of users (S520).
  • a user input is obtained from one user among a plurality of users, and that one user may be referred to as a second user for convenience.
  • the processor 110 may obtain a user input for selecting task information from the second user terminal.
  • the user can select specific task information from among one or more task information displayed through the output unit 250 of the user terminal 200 through the input unit 240, and the user input for the selected specific task information is sent to the server 100. It can be delivered. That is, the server 100 may obtain a user input for selecting specific task information from the user terminal 200.
  • the processor 110 may match the user and task information based on the obtained user input (S530). If the task information matches at least one user, the processor 110 may stop additional matching operations for the corresponding task information. The processor 110 may store the task information and the user's matching history in the memory 130.
  • FIG. 6 is a flowchart of an operation in which the server 100 acquires solution information from each of two or more user terminals for one single task information according to an embodiment of the present disclosure.
  • solution information is obtained from two different users among a plurality of users, and the two users may be referred to as a second user and a third user, respectively, for convenience. Assume.
  • the server 100 may obtain task information indicating a specific task from the first user terminal 200-1 (S610).
  • the server 100 that has received the task information may transmit the task information to the user terminal of at least one user among the plurality of users (S620).
  • the server 100 may send task information to a user terminal of a second user (second user terminal 200-2) and a user terminal of a third user (third user terminal 200-3) among a plurality of users. )), respectively.
  • the server 100 may obtain the first user input from the second user terminal 200-2 (S631) and the second user input from the third user terminal 200-3 (S633). there is.
  • the server 100 can match task information with the second user and the third user (S640). Steps S610 to S640 described above may be performed by the server 100 in the same or similar manner as step S410 and step S420 described above with reference to FIG. 4 and each step described above with reference to FIG. 5 .
  • the server 100 may obtain first solution information from the second user terminal 200-2 (S651). Additionally, the server 100 may obtain second solution information from the third user terminal 200-3 (S653).
  • solution information corresponding to the task information may include source code written in the language indicated by the language information. You can.
  • the language indicated by the language information and the language of the source code included in the solution information may be Python.
  • solution information corresponding to the task information may include source code written in a language different from the language indicated by the language information.
  • the language indicated by the language information may be Python and the language of the source code included in the solution information may be C++.
  • the first solution information includes source code written in a language indicated by language information included in the task information
  • the second solution information includes source code included in the task information. It is assumed that it contains source code written in a language different from the language indicated by the language information.
  • the server 100 may store the first solution information and the second solution information in the memory 130 (S660).
  • the server 100 stores at least one solution information for specific task information in the memory 130 in the form of a “task-solution information pair” as described above, so that task information identical or similar to the specific task information is later obtained. If so, solution information corresponding to the acquired task information can be returned to the user without additionally acquiring solution information.
  • the server 100 may transmit at least one of the first solution information and the second solution information to the first user terminal 200-1 (S670).
  • the processor 110 may transmit both first solution information and second solution information to the first user terminal 200-1.
  • the processor 110 may transmit the first solution information to the first user terminal 200-1.
  • the processor 110 transmits both the first solution information and the second solution information to the first user terminal 200-1. You can.
  • the server 100 provides source code written in different languages to the user, the user can obtain the source code for solving the desired problem in various languages.
  • the server 100 receives private information required to solve a specific task indicated by the task information from the user terminal of the user (eg, the first user) transmitting the task information.
  • the private information may be acquired and transmitted to the user terminal of the user (for example, the second user) matched with the corresponding task information.
  • Private information may include, for example, source code managed in a private manner by the first user or an Internet address where such source code can be accessed. Through this, users matched with task information can write specific source code, including non-public source code, that solves the specific task indicated by the task information.
  • FIG. 7 is a flowchart of an operation in which the server 100 obtains task information from a user and then delivers solution information for a specific task indicated by the task information to the user according to another embodiment of the present disclosure.
  • the processor 110 may obtain task information indicating a specific task requiring creation of source code from the first user terminal (S710). Step S710 may be performed by the server 100 in the same or similar manner as S410 described above with reference to FIG. 4 .
  • the processor 110 may determine solution information including specific source code written to solve a specific task based on at least one task-solution information pair stored in the memory 130 (S720). Specifically, the processor 110 collects task information obtained from the user and for which solution information is required (hereinafter, also referred to as "target task information”) and task information of one or more task-solution information pairs stored in the memory 130 (hereinafter, (also referred to as “reference task information”) can be compared to determine solution information for solving a specific task indicated by target task information.
  • target task information task information obtained from the user and for which solution information is required
  • reference task information task information of one or more task-solution information pairs stored in the memory 130
  • the processor 110 compares the explanatory text included in the target task information with the explanatory text included in at least one reference task information, and if the two explanatory sentences are the same or similar to a certain level or more, the task containing the reference task information-
  • the solution information of the solution information pair may be determined as solution information for solving a specific task indicated by the target task information.
  • the processor 110 compares the keyword set of the target task information and the keyword set of the reference task information, and if the keyword sets are similar, the solution information of the task-solution information pair including the reference task information is used as the target task information.
  • a solution information can be used to solve a specific problem indicated by the information.
  • the method for calculating the similarity between each set of keywords of a plurality of task information has been described above, so description of duplicate content will be omitted.
  • the processor 110 may transmit the determined solution information to the first user terminal (S730).
  • the server 100 matches at least one solution information to previously acquired task information and stores it in the memory 130 in the form of a task-solution information pair. By storing it, if task information newly acquired from a specific user is the same or similar to previously acquired task information, solution information can be immediately provided to the specific user without having to wait for the solution from other users.
  • Methods according to the present disclosure may be computer-implemented methods.
  • each step of the methods is shown and described in a predetermined order, but in addition to being performed sequentially, the steps may also be performed in any order that can be arbitrarily combined according to the present disclosure.
  • at least some of the steps may be performed in parallel, iteratively, or heuristically. This disclosure does not exclude making changes or modifications to the methods.
  • at least some steps may be omitted or other steps may be added.
  • Various embodiments of the present disclosure may be implemented as software recorded on a machine-readable recording medium.
  • the software may be software for implementing various embodiments of the present disclosure described above.
  • Software can be inferred from various embodiments of the present disclosure by programmers in the technical field to which this disclosure pertains.
  • software can be instructions (e.g. code or code segments) or programs that can be read by a device.
  • a device is a device that can operate according to commands called from a recording medium, and may be, for example, a computer.
  • the device may be an unmanned terminal 100 or a server 110 according to embodiments of the present disclosure.
  • the device's processor may execute a called instruction and cause the device's components to perform a function corresponding to the instruction.
  • a recording medium may refer to any type of recording medium in which data is stored that can be read by a device.
  • Recording media may include, for example, ROM, RAM, CD-ROM, magnetic tape, floppy disk, optical data storage devices, etc.
  • the recording medium may be implemented in a distributed form, such as in a computer system connected to a network.
  • Software may be distributed, stored, and executed on a computer system, etc.
  • the recording medium may be a non-transitory recording medium.
  • a non-transitory recording medium refers to a tangible medium regardless of whether data is stored semi-permanently or temporarily, and does not include signals that are temporarily propagated.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Economics (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Educational Administration (AREA)
  • Development Economics (AREA)
  • Game Theory and Decision Science (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

본 개시의 한 측면에 따른 장치는 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고, 상기 하나 이상의 프로세서는, 복수의 사용자들 중 제1 사용자의 장치로부터 소스 코드(source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득하고, 상기 과제 정보를 상기 복수의 사용자들 중 제2 사용자와 매칭하고, 상기 제2 사용자의 장치로부터 상기 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션(solution) 정보를 획득하고, 상기 솔루션 정보를 상기 제1 사용자의 장치로 전달하도록 구성될 수 있고, 상기 과제 정보는 상기 특정 과제의 해결 여부를 검증하기 위한 적어도 하나의 사전 결정된 조건을 포함할 수 있다.

Description

과제에 대한 솔루션의 제공
본 개시는 과제에 대한 솔루션을 제공하기 위한 기술에 관한 것이다.
일반적으로, 개발자는 개발용 오프라인 툴 또는 온라인 컴파일러를 사용하여 특정 애플리케이션의 소스 코드에 대해 컴파일 처리를 수행하고 해당 애플리케이션이 잘 작동되는지 확인한 후 애플리케이션을 생성할 수 있다. 이때, 해당 애플리케이션을 사용하고자 하는 다른 사용자는 개발자가 소스 코드를 컴파일한 결과로서 생성되는 실행 파일을 온라인 상에 업로드한 후에만 업로드된 실행 파일에 기초하여 해당 애플리케이션을 사용할 수 있다.
그러나, 애플리케이션의 생성 또는 제작 과정은 상술한 바와 같이 개발자로부터 사용자로 단방향으로 진행될 경우, 사용자는 자신이 희망하는 특정 애플리케이션의 사양 또는 특정 과제를 개발자에게 전달하기 어렵다는 불편함이 발생할 수 있다.
따라서 사용자의 불편함을 해소하고 효과적으로 애플리케이션을 제작하기 위한 기술의 수요가 증가해왔다.
본 개시의 다양한 실시예에 따르면, 사용자에 의해 지정된 과제에 대해 솔루션을 제공하는 것을 기술적 과제로 한다.
본 개시의 다양한 실시예에 따르면, 사용자가 특정 과제를 해결하는 소스 코드를 다른 사용자로부터 획득할 수 있도록 하는 것을 기술적 과제로 한다.
본 개시의 다양한 실시예들에 의하면, 사용자가 특정 과제를 해결하는 소스 코드를 다양한 소스 코드 언어에 따라 획득할 수 있도록 하는 것을 기술적 과제로 한다.
본 개시의 다양한 실시예들에 의하면, 사용자가 비공개 정보를 포함하여 소스 코드의 작성이 요구되는 특정 과제를 해결하는 소스 코드를 획득할 수 있도록 하는 것을 기술적 과제로 한다.
본 개시의 한 측면으로서, 과제에 대한 솔루션을 제공할 수 있는 장치가 제공될 수 있다. 본 개시의 한 측면에 따른 장치는 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세--서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고, 상기 하나 이상의 프로세서는, 복수의 사용자들 중 제1 사용자의 장치로부터 소스 코드(source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득하고, 상기 과제 정보를 상기 복수의 사용자들 중 제2 사용자와 매칭하고, 상기 제2 사용자의 장치로부터 상기 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션(solution) 정보를 획득하고, 상기 솔루션 정보를 상기 제1 사용자의 장치로 전달하도록 구성될 수 있고, 상기 과제 정보는 상기 특정 과제의 해결 여부를 검증하기 위한 적어도 하나의 사전 결정된 조건을 포함할 수 있다.
본 개시의 다른 한 측면으로서, 과제에 대한 솔루션을 제공할 수 있는 장치가 제공될 수 있다. 본 개시의 다른 한 측면에 따른 장치는 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고, 상기 하나 이상의 메모리는 과제 정보 및 해당 과제 정보에 대한 적어도 하나의 솔루션(solution) 정보를 포함하는 적어도 하나의 과제-솔루션 정보 쌍을 저장하고, 상기 하나 이상의 프로세서는, 제1 사용자의 장치로부터 소스 코드(source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득하고, 상기 메모리에 저장된 상기 적어도 하나의 과제-솔루션 정보 쌍에 기초하여 상기 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션 정보를 결정하고, 상기 솔루션 정보를 상기 제1 사용자의 장치로 전달하도록 구성될 수 있고, 상기 과제 정보는 상기 특정 과제의 해결 여부를 검증하기 위한 적어도 하나의 사전 결정된 조건을 포함할 수 있다.
본 개시의 다른 한 측면으로서, 과제에 대한 솔루션을 제공할 수 있는 방법이 제공될 수 있다. 본 개시의 한 측면에 따른 방법은 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나의 명령을 저장하는 하나 이상의 메모리를 포함하는 전자 장치에 의해 수행되는 방법으로서, 복수의 사용자들 중 제1 사용자의 장치로부터 소스 코드(source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득하는 단계; 상기 과제 정보를 상기 복수의 사용자들 중 제2 사용자와 매칭하는 단계; 상기 제2 사용자의 장치로부터 상기 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션(solution) 정보를 획득하는 단계; 및 상기 솔루션 정보를 상기 제1 사용자의 장치로 전달하는 단계를 포함하고, 상기 과제 정보는 상기 특정 과제의 해결 여부를 검증하기 위한 적어도 하나의 사전 결정된 조건을 포함할 수 있다.
본 개시의 다양한 실시예들에 의하면, 사용자는 소스 코드의 작성이 요구되는 특정 과제를 해결하는 소스 코드를 다른 사용자로부터 획득할 수 있다.
본 개시의 다양한 실시예들에 의하면, 사용자는 소스 코드의 작성이 요구되는 특정 과제를 해결하는 소스 코드를 다양한 소스 코드 언어에 따라 획득할 수 있다.
본 개시의 다양한 실시예들에 의하면, 사용자는 비공개 정보를 포함하여 소스 코드의 작성이 요구되는 특정 과제를 해결하는 소스 코드를 획득할 수 있다.
도 1은 본 개시의 일 실시예에 따른 서버, 사용자 단말 및 통신망을 포함하는 시스템을 도시한 도면이다.
도 2는 본 명세서에 개시된 내용의 일 실시예에 따른 서버의 블록도이다.
도 3은 본 명세서에 개시된 내용의 일 실시예에 따른 사용자 단말의 블록도이다.
도 4는 본 개시의 일 실시예에 따라 서버가 하나의 사용자로부터 과제 정보를 획득한 후 해당 과제 정보가 지시하는 특정 과제에 대한 솔루션 정보를 해당 사용자에게 전달하는 동작에 관한 순서도이다.
도 5는 본 개시의 일 실시예에 따라 서버가 하나의 사용자로부터 획득한 과제 정보를 복수의 사용자들 중 적어도 하나의 사용자와 매칭하는 동작에 관한 순서도이다.
도 6은 본 개시의 일 실시예에 따라 서버가 하나의 단일 과제 정보에 대해 둘 이상의 사용자 단말들 각각으로부터 솔루션 정보를 획득하는 동작에 관한 흐름도이다.
도 7은 본 개시의 다른 일 실시예에 따라 서버가 하나의 사용자로부터 과제 정보를 획득한 후 해당 과제 정보가 지시하는 특정 과제에 대한 솔루션 정보를 해당 사용자에게 전달하는 동작에 관한 순서도이다.
본 문서에 기재된 다양한 실시예들은, 본 개시의 기술적 사상을 명확히 설명하기 위한 목적으로 예시된 것이며, 이를 특정한 실시 형태로 한정하려는 것이 아니다. 본 개시의 기술적 사상은, 본 문서에 기재된 각 실시예의 다양한 변경(modifications), 균등물(equivalents), 대체물(alternatives) 및 각 실시예의 전부 또는 일부로부터 선택적으로 조합된 실시예를 포함한다. 또한 본 개시의 기술적 사상의 권리 범위는 이하에 제시되는 다양한 실시예들이나 이에 대한 구체적 설명으로 한정되지 않는다.
기술적이거나 과학적인 용어를 포함해서, 본 문서에서 사용되는 용어들은, 달리 정의되지 않는 한, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자에게 일반적으로 이해되는 의미를 가질 수 있다.
본 문서에서 사용되는 "포함한다", "포함할 수 있다", "구비한다", "구비할 수 있다", "가진다", "가질 수 있다" 등과 같은 표현들은, 대상이 되는 특징(예: 기능, 동작 또는 구성요소 등)이 존재함을 의미하며, 다른 추가적인 특징의 존재를 배제하지 않는다. 즉, 이와 같은 표현들은 다른 실시예를 포함할 가능성을 내포하는 개방형 용어(open-ended terms)로 이해되어야 한다.
본 문서에서 사용되는 단수형의 표현은, 문맥상 다르게 뜻하지 않는 한 복수형의 의미를 포함할 수 있으며, 이는 청구항에 기재된 단수형의 표현에도 마찬가지로 적용된다.
본 문서에서 사용되는 "제1", "제2", 또는 "첫째", "둘째" 등의 표현은, 문맥상 다르게 뜻하지 않는 한, 복수의 동종 대상들을 지칭함에 있어 한 대상을 다른 대상과 구분하기 위해 사용되며, 해당 대상들간의 순서 또는 중요도를 한정하는 것은 아니다.
본 문서에서 사용되는 "A, B, 및 C," "A, B, 또는 C," "A, B, 및/또는 C" 또는 "A, B, 및 C 중 적어도 하나," "A, B, 또는 C 중 적어도 하나," "A, B, 및/또는 C 중 적어도 하나," "A, B, 및 C 중에서 선택된 적어도 하나," "A, B, 또는 C 중에서 선택된 적어도 하나," "A, B, 및/또는 C 중에서 선택된 적어도 하나" 등의 표현은, 각각의 나열된 항목 또는 나열된 항목들의 가능한 모든 조합들을 의미할 수 있다. 예를 들어, "A 및 B 중에서 선택된 적어도 하나"는, (1) A, (2) A 중 적어도 하나, (3) B, (4) B 중 적어도 하나, (5) A 중 적어도 하나 및 B 중 적어도 하나, (6) A 중 적어도 하나 및 B, (7) B 중 적어도 하나 및 A, (8) A 및 B를 모두 지칭할 수 있다.
본 문서에서 사용되는 "~에 기초하여"라는 표현은, 해당 표현이 포함되는 어구 또는 문장에서 기술되는, 결정, 판단의 행위 또는 동작에 영향을 주는 하나 이상의 인자를 기술하는데 사용되고, 이 표현은 해당 결정, 판단의 행위 또는 동작에 영향을 주는 추가적인 인자를 배제하지 않는다.
본 문서에서 사용되는, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "연결되어" 있다거나 "접속되어" 있다는 표현은, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결 또는 접속되는 것뿐 아니라, 새로운 다른 구성요소(예: 제3 구성요소)를 매개로 하여 연결 또는 접속되는 것을 의미할 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(configured to)"은 문맥에 따라, "~하도록 설정된", "~하는 능력을 가지는", "~하도록 변경된", "~하도록 만들어진", "~를 할 수 있는" 등의 의미를 가질 수 있다. 해당 표현은, "하드웨어적으로 특별히 설계된"의 의미로 제한되지 않으며, 예를 들어 특정 동작을 수행하도록 구성된 프로세서란, 소프트웨어를 실행함으로써 그 특정 동작을 수행할 수 있는 범용 프로세서(generic-purpose processor)를 의미할 수 있다.
이하, 첨부된 도면들을 참조하여, 본 개시의 다양한 실시예들을 설명한다. 첨부된 도면 및 도면에 대한 설명에서, 동일하거나 실질적으로 동등한(substantially equivalent) 구성요소에는 동일한 참조부호가 부여될 수 있다. 또한, 이하 다양한 실시예들의 설명에 있어서, 동일하거나 대응하는 구성요소를 중복하여 기술하는 것이 생략될 수 있으나, 이는 해당 구성요소가 그 실시예에 포함되지 않는 것을 의미하지는 않는다.
도 1은 본 개시의 일 실시예에 따른 서버(100), 사용자 단말(200) 및 통신망(300)을 포함하는 시스템을 도시한 도면이다. 서버(100) 및 사용자 단말(200)은 본 명세서에서 개시된 솔루션(Solution) 제공 기술에 따라 통신망(300)을 통해 서로 정보를 주거나 받을 수 있다.
서버(100)는 솔루션 제공 또는 중개를 위한 서비스 제공자의 전자 장치일 수 있다. 서비스 제공자는 본 명세서에 개시된 컨텐츠 표시 기술에 따라 컨텐츠를 제공하는 서비스의 운영 주체일 수 있다. 서버(100)는, 유선 또는 무선으로 연결된 사용자 단말(200)에게 정보를 전송하거나 서비스를 제공하는 전자 장치로서, 예를 들어, 애플리케이션 서버, 프록시 서버, 클라우드 서버 등일 수 있다.
사용자 단말(200)은 하나 이상의 사용자 단말 또는 둘 이상의 사용자 단말 집합을 지시할 수 있다. 본 명세서의 개시 내용에 따른 다양한 실시예에서 사용자 단말(200)이 둘 이상의 사용자 단말 집합을 지시할 경우, 각각의 사용자 단말은 제1 사용자 단말(200-1), 제2 사용자 단말(200-2), ..., 제n 사용자 단말(200-n)로 지칭될 수 있다(n은 2 이상의 자연수).
사용자 단말(200)은 전술한 컨텐츠 제공 서비스를 이용하는 사용자의 단말일 수 있다. 사용자 단말(200)은, 예를 들어, 스마트폰, 태블릿 컴퓨터(Tablet Computer), PC(Personal Computer), 이동 전화기(Mobile Phone), PDA(Personal Digital Assistant), 오디오 플레이어(Audio Player), 웨어러블 장치(Wearable Device) 중 적어도 하나일 수 있다.
본 명세서의 개시 내용에서 일 장치의 구성 또는 동작을 설명할 때, "장치"라는 용어는 설명의 대상이 된 장치를 지칭하기 위한 용어이고, "외부 장치"라는 용어는 설명의 대상이 된 장치의 관점에서 볼 때 외부에 존재하는 장치를 지칭하기 위한 용어로서 각각 사용될 수 있다. 예를 들어 서버(100)를 "장치"로 두고 설명할 경우, 서버(100)의 관점에서 사용자 단말(200)은 "외부 장치"로 불릴 수 있다. 또한, 예를 들어 사용자 단말(200)을 "장치"로 두고 설명할 경우, 사용자 단말(200)의 관점에서 서버(100)는 "외부 장치"로 불릴 수 있다. 즉, 서버(100) 및 사용자 단말(200) 각각은 동작 주체의 관점에 따라 각각 "장치" 및 "외부 장치"로 지칭되거나 각각 "외부 장치" 및 "장치"로 지칭될 수 있다. 이하 본 명세서에서 "특정 사용자의 장치(예를 들어, 제1 사용자의 장치)"는 "특정 사용자의 사용자 단말(예를 들어, 제1 사용자의 사용자 단말)" 또는 "제1 사용자 단말(예를 들어, 제1 사용자 단말)"등의 표현과 상호 교환적으로 사용될 수 있다.
통신망(300)은 유선 또는 무선 통신망을 모두 포함할 수 있다. 통신망(300)은 서버(100) 및 사용자 단말(200) 사이에서 데이터가 교환되도록 할 수 있다. 유선 통신망은 예를 들어, USB(Universal Serial Bus), HDMI(High Definition Multimedia Interface), RS-232(Recommended Standard-232) 또는 POTS(Plain Old Telephone Service) 등의 방식에 따른 통신망을 포함할 수 있다. 무선 통신망은 예를 들어, eMBB(enhanced Mobile Broadband), URLLC(Ultra Reliable Low-Latency Communications), MMTC(Massive Machine Type Communications), LTE(Long-Term Evolution), LTE-A(LTE Advance), NR(New Radio), UMTS(Universal Mobile Telecommunications System), GSM(Global System for Mobile communications), CDMA(Code Division Multiple Access), WCDMA(Wideband CDMA), WiBro(Wireless Broadband), WiFi(Wireless Fidelity), 블루투스(Bluetooth), NFC(Near Field Communication), GPS(Global Positioning System) 또는 GNSS(Global Navigation Satellite System) 등의 방식에 따른 통신망을 포함할 수 있다. 본 명세서의 통신망(300)은 상술한 예시들에 한정되지 않으며, 복수의 주체 또는 장치 사이에서 데이터가 교환되도록 하는 다양한 종류의 통신망을 제한없이 포함할 수 있다.
도 2는 본 명세서에 개시된 내용의 일 실시예에 따른 서버(100)의 블록도이다. 서버(100)는 하나 이상의 프로세서(110), 통신 회로(120) 또는 메모리(130)를 구성요소로서 포함할 수 있다. 어떤 실시예에서는, 서버(100)의 이 구성요소들 중 적어도 하나가 생략되거나, 다른 구성요소가 서버(100)에 추가될 수 있다. 어떤 실시예에서는, 추가적으로 또는 대체적으로(in alternative to), 일부의 구성요소들이 통합되어 구현되거나, 단수 또는 복수의 개체로 구현될 수 있다. 서버(100) 내부 또는 외부의 구성요소들 중 적어도 일부의 구성요소들은 버스, GPIO(General Purpose Input/Output), SPI(Serial Peripheral Interface) 또는 MIPI(Mobile Industry Processor Interface) 등을 통해 서로 연결됨으로써 데이터 또는 시그널을 주거나 받을 수 있다.
하나 이상의 프로세서(110)는 프로세서(110)라고 표현될 수 있다. 프로세서(110)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 프로세서의 집합을 의미할 수 있다. 프로세서(110)는 소프트웨어(예를 들어, 명령, 프로그램 등)를 구동하여 프로세서(110)와 연결된 서버(100)의 적어도 하나의 구성요소를 제어할 수 있다. 또한 프로세서(110)는 다양한 연산, 처리, 데이터 생성 또는 가공 등의 동작을 수행할 수 있다. 또한 프로세서(110)는 데이터 등을 메모리(130)로부터 로드하거나 메모리(130)에 저장할 수 있다.
통신 회로(120)는, 서버(100)와 다른 장치(예를 들어, 사용자 단말(200) 또는 다른 서버) 사이의 무선 또는 유선 통신을 수행할 수 있다. 예를 들어, 통신 회로(120)는 eMBB, URLLC, MMTC, LTE, LTE-A, NR, UMTS, GSM, CDMA, WCDMA, WiBro, WiFi, 블루투스, NFC, GPS 또는 GNSS 등의 방식에 따른 무선 통신을 수행할 수 있다. 또한, 예를 들어, 통신 회로(120)는 USB(Universal Serial Bus), HDMI(High Definition Multimedia Interface), RS-232(Recommended Standard-232) 또는 POTS(Plain Old Telephone Service) 등의 방식에 따른 유선 통신을 수행할 수 있다.
메모리(130)는 다양한 데이터를 저장할 수 있다. 메모리(130)에 저장되는 데이터는, 서버(100)의 적어도 하나의 구성요소에 의해 획득되거나, 처리되거나 또는 사용되는 데이터로서, 소프트웨어(예를 들어, 명령, 프로그램 등)를 포함할 수 있다. 메모리(130)는 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 메모리(130)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 메모리의 집합을 의미할 수 있다. 본 명세서에서 언급되는 "메모리(130)에 저장되는 명령(Instruction)들의 집합" 또는 "메모리(130)에 저장되는 프로그램"이라는 표현은, 서버(100)의 리소스를 제어하기 위한 운영체제, 어플리케이션 또는 어플리케이션이 서버(100)의 리소스들을 활용할 수 있도록 어플리케이션에 다양한 기능을 제공하는 미들 웨어 등을 지칭하기 위해 사용될 수 있다. 일 실시예에서, 프로세서(110)가 특정 연산을 수행할 때, 메모리(130)는 프로세서(110)에 의해 수행되고 특정 연산에 대응되는 명령들을 저장할 수 있다.
일 실시예에서, 서버(100)는 프로세서(110)의 연산 결과에 따른 데이터, 통신 회로(120)에 의해 수신된 데이터 또는 메모리(130)에 저장된 데이터 등을 외부 장치로 전송할 수 있다. 외부 장치는 수신된 데이터를 출력(표시 또는 표출)하기 위한 장치일 수 있다. 외부 장치는 예를 들어, 사용자 단말(200)일 수 있다.
도 3은 본 명세서에 개시된 내용의 일 실시예에 따른 사용자 단말(200)의 블록도이다. 사용자 단말(200)은 하나 이상의 프로세서(210), 통신 회로(220) 또는 메모리(230)를 구성요소로서 포함할 수 있다. 또한 사용자 단말(200)은 입력부(240) 또는 출력부(250) 중 적어도 하나를 더 포함할 수도 있다.
프로세서(210)는 소프트웨어(예를 들어, 명령, 프로그램 등)를 구동하여 프로세서(110)와 연결된 사용자 단말(200)의 적어도 하나의 구성요소를 제어할 수 있다. 또한 프로세서(210)는 다양한 연산, 처리, 데이터 생성 또는 가공 등의 동작을 수행할 수 있다. 또한 프로세서(210)는 데이터 등을 메모리(230)로부터 로드하거나 메모리(230)에 저장할 수 있다.
통신 회로(220)는, 사용자 단말(200)과 다른 장치(예를 들어, 서버(100) 또는 다른 사용자 단말) 사이의 무선 또는 유선 통신을 수행할 수 있다. 예를 들어, 통신 회로(220)는 eMBB, URLLC, MMTC, LTE, LTE-A, NR, UMTS, GSM, CDMA, WCDMA, WiBro, WiFi, 블루투스, NFC, GPS 또는 GNSS 등의 방식에 따른 무선 통신을 수행할 수 있다. 또한, 예를 들어, 통신 회로(220)는 USB, HDMI, RS-232 또는 POTS 등의 방식에 따른 유선 통신을 수행할 수 있다.
메모리(230)는 다양한 데이터를 저장할 수 있다. 메모리(230)에 저장되는 데이터는, 사용자 단말(200)의 적어도 하나의 구성요소에 의해 획득되거나, 처리되거나 또는 사용되는 데이터로서, 소프트웨어(예를 들어, 명령, 프로그램 등)를 포함할 수 있다. 메모리(230)는 휘발성 또는 비휘발성 메모리를 포함할 수 있다. 메모리(230)라는 용어는, 문맥상 명백히 다르게 표현하지 않는 이상, 하나 또는 그 이상의 메모리의 집합을 의미할 수 있다. 본 명세서에서 언급되는 "메모리(230)에 저장되는 명령(Instruction)들의 집합" 또는 "메모리(230)에 저장되는 프로그램"이라는 표현은, 사용자 단말(200)의 리소스를 제어하기 위한 운영체제, 어플리케이션 또는 어플리케이션이 사용자 단말(200)의 리소스들을 활용할 수 있도록 어플리케이션에 다양한 기능을 제공하는 미들 웨어 등을 지칭하기 위해 사용될 수 있다. 일 실시예에서, 프로세서(210)가 특정 연산을 수행할 때, 메모리(230)는 프로세서(210)에 의해 수행되고 특정 연산에 대응되는 명령들을 저장할 수 있다.
일 실시예에서, 사용자 단말(200)은 입력부(240)를 더 포함할 수 있다. 입력부(240)는 외부로부터 수신된 데이터를 사용자 단말(200)에 포함된 적어도 하나의 구성요소로 전달하는 구성요소일 수 있다. 예를 들어, 입력부(240)는 마우스, 키보드, 또는 터치 패드 등을 포함할 수 있다.
일 실시예에서, 사용자 단말(200)은 출력부(250)를 더 포함할 수 있다. 출력부(250)는 사용자 단말(200)에서 처리되는 정보를 표시(출력)하거나 외부로 전송(송출)할 수 있다. 예를 들어, 출력부(250)는 사용자 단말(200)에서 처리되는 정보를 시각적으로 표시할 수 있다. 출력부(250)는 UI(User Interface) 정보 또는 GUI(Graphic User Interface) 정보 등을 표시할 수 있다. 이 경우, 출력부(250)는 액정 디스플레이(Liquid Crystal Display, LCD), 박막 트랜지스터 액정 디스플레이(Thin Film Transistor-Liquid Crystal Display, TFT-LCD), 유기 발광 다이오드(Organic Light-Emitting Diode, OLED), 플렉시블 디스플레이(Flexible Display), 3차원 디스플레이(3D Display), 전자잉크 디스플레이(E-ink Display) 중에서 적어도 하나를 포함할 수 있다. 또한, 예를 들어, 출력부(250)는 사용자 단말(200)에서 처리되는 정보를 청각적으로 표시할 수 있다. 출력부(250)는 임의의 오디오 파일 포맷(예를 들어, MP3, FLAC, WAV 등) 방식을 따르는 오디오 데이터를 음향 장치를 통해 표시할 수 있다. 이 경우, 출력부(250)는 스피커, 헤드셋, 헤드폰 중 적어도 하나를 포함할 수 있다.
도 4는 본 개시의 일 실시예에 따라 서버(100)가 하나의 사용자로부터 과제 정보를 획득한 후 해당 과제 정보가 지시하는 특정 과제에 대한 솔루션 정보를 해당 사용자에게 전달하는 동작에 관한 순서도이다.
프로세서(110)는 복수의 사용자들 중 하나의 사용자(이하, "제1 사용자"라고도 함)의 사용자 단말로부터 소스 코드(Source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득할 수 있다(S410). 본 개시에서 과제(Assignment)란 컴퓨팅 장치가 소스 코드를 실행함으로써 해결될 수 있는 문제를 지칭할 수 있다. 또한, 본 개시에서 "소스 코드"는 컴퓨팅 장치에 의해 변환 또는 컴파일(Compile)되기 전의 코드로서, 특정 언어의 문법에 따라 쓰여진 문서 또는 문자의 집합일 수 있다. 예를 들어, 소스 코드의 언어의 종류에는 파이썬(Python), C, C++, Java 등이 포함될 수 있다.
또한, 본 개시에서 과제 정보는 특정 과제를 지시하는 적어도 하나의 정보를 포함할 수 있다. 예를 들어, 과제 정보는 설명문(Description), 입력 값 및/또는 출력 값의 변수 타입(Variable Type), 입력 값 및/또는 출력 값의 제약 조건 중 적어도 하나를 포함할 수 있다. 과제 정보에 포함되는 설명문은 과제를 설명하는 문장으로서 예를 들어, "두 정수를 입력 받아 두 정수의 합을 출력하는 함수" 또는 "두 문장을 입력 받아 두 문장의 공통 문자열을 출력하는 함수"와 같은 내용의 기재를 포함하는 문장일 수 있다. 과제 정보에 포함되는 변수 타입은 입력 값 또는 출력 값의 변수 타입을 정의하기 위한 값으로서 예를 들어, 정수(Integer), 실수(Float), 문자(Character), 문자열(String) 등일 수 있다. 과제 정보에 포함되는 제약 조건은 입력 값 또는 출력 값의 변수 타입에 따라 설정될 수 있는 조건으로서 예를 들어, 입력 값의 변수 타입이 정수인 경우에 입력 값의 제약 조건은 "0 초과 10000 미만" 등으로 설정될 수 있고 입력 값의 변수 타입이 문자열인 경우에 입력 값의 제약 조건은 "문자열의 길이 10 이상" 등으로 설정될 수 있다. 예컨대, 임의의 과제 정보를 JSON(JavaScript Object Notation) 포맷으로 표현할 경우, 과제 정보는 {"설명문": "Do subtraction for given 2 integer numbers", "제1 입력 값 변수 타입": "Integer", "제2 입력 값 변수 타입": "Integer", "출력 값 변수 타입": "Integer", "제1 입력 값에 대한 제약 조건": "0보다 크고 100000보다 작은 정수", "제2 입력 값에 대한 제약 조건": "0보다 크고 100000보다 작은 정수"}와 같이 예시적으로 표현될 수 있다.
본 개시에 따른 일 실시예에서, 과제 정보는 특정 과제의 해결 여부를 검증(Validation)하기 위한 적어도 하나의 사전 결정된 조건(이하, "검증 조건"이라고도 함)을 더 포함할 수 있다. 일 실시예에 따르면 검증 조건은 입력 값 및 해당 입력 값에 대한 예상 출력 값에 기초하여 조건의 만족 여부가 결정되는 조건일 수 있다. 예를 들어, 과제 정보에 의해 지시되는 특정 과제가 "첫번째 인자로 주어지는 문자열 내에 두번째 인자로 주어지는 문자열이 포함되는 지 여부를 알려주는 함수 생성"이라고 가정할 수 있다. 이 경우, 하나의 검증 조건은 입력 값이 "abcdefg" 및 "abc"로 설정되고 이에 대한 예상 출력 값이 "true"로 설정된 검증 조건일 수 있다. 또한, 다른 하나의 검증 조건은 입력 값이 "abcdefg" 및 ""(즉, 빈 문자열)로 설정되고 이에 대한 예상 출력 값이 "false"로 설정된 검증 조건일 수 있다. 또한, 예를 들어, 과제 정보에 의해 지시되는 특정 과제가 "첫번째 인자로 주어지는 정수와 두번째 인자로 주어지는 정수의 차이 값을 반환하는 함수 생성"이라고 가정할 수 있다. 이 경우, 하나의 검증 조건은 입력 값이 "10" 및 "4"로 설정되고 이에 대한 예상 출력 값이 "6"으로 설정된 검증 조건일 수 있다. 또한, 적어도 하나의 검증 조건에 포함된 다른 한 검증 조건은 입력 값이 "10000" 및 "10000"으로 설정되고 이에 대한 예상 출력 값이 "0"으로 설정된 검증 조건일 수 있다. 상술한 검증 조건에 관한 몇몇 실시예들은 본 개시의 설명을 위한 예시일 뿐 본 개시를 제한하지 않는다.
본 개시에 따른 일 실시예에서, 과제 정보는 작성이 요청되는 소스 코드의 언어를 지시하는 언어 정보를 더 포함할 수 있다. 소스 코드의 언어를 지시하는 언어 정보는 해당 언어의 명칭에 대한 문자열을 포함할 수 있다.
다음으로, 프로세서(110)는 단계 S410에서 획득된 과제 정보를 복수의 사용자들 중 특정 사용자(이하, "제2 사용자"라고도 함)와 매칭할 수 있다(S420). 프로세서(110)는 복수의 사용자들 중 적어도 하나의 사용자를 과제 정보와 매칭할 수 있다. 과제 정보와 매칭되는 적어도 하나의 사용자는 서버(100)에 의해 하나 이상의 사전 결정된 방식에 따라 결정될 수 있다. 일 실시예에서, 서버(100)는 통신 가능한 사용자 단말(200) 중 임의의 한 사용자 단말을 무작위로 선택하고 선택된 사용자 단말의 사용자를 과제 정보와 매칭할 수 있다. 다른 일 실시예에서, 서버(100)는 과제 정보를 전달한 제1 사용자로부터 특정 사용자의 식별 정보(예를 들어, 사용자 ID)등을 수신하고 해당 사용자를 과제 정보와 매칭할 수 있다. 또 다른 일 실시예에서, 서버(100)는 과제 정보를 특정 사용자의 사용자 단말로 전달한 후, 해당 사용자의 사용자 단말로부터 획득되는 사용자 입력에 기초하여 사용자를 과제 정보와 매칭할 수 있다. 도 4를 참조하여서는 과제 정보가 복수의 사용자들 중 하나의 사용자(제2 사용자)와 매칭되는 것으로 설명되지만 이는 본 개시를 설명하기 위한 예시적 기재일 뿐, 본 개시의 과제 정보는 둘 이상의 사용자와 매칭될 수도 있다.
다음으로, 프로세서(110)는 단계 S410에서 획득된 과제 정보와 매칭된 사용자(즉, 제2 사용자)의 사용자 단말로부터 해당 과제 정보가 지시하는 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션 정보를 획득할 수 있다(S430).
본 개시에서 솔루션 정보는 특정 과제 정보와 대응되는 정보일 수 있다. 예를 들어, 솔루션 정보는 대응되는 과제 정보에 의해 지시되는 특정 과제를 해결하기 위해 작성된 소스 코드를 포함할 수 있다. 솔루션 정보는 작성된 소스 코드를 컴파일한 결과로 획득되는 바이너리(binary) 파일 또는 실행 파일(예를 들어, .exe 파일) 등을 포함할 수 있다. 또한, 예를 들어 솔루션 정보는, 소스 코드를 작성한 사용자에 관한 정보, 대응되는 과제 정보에 포함된 검증 조건을 검증한 컴퓨팅 환경 또는 대응되는 과제 정보에 포함된 검증 조건을 검증한 시각 중 적어도 하나를 더 포함할 수 있다. 본 개시에서 과제 정보와 솔루션 정보가 "대응된다"는 표현은, 하나의 솔루션 정보에 대해 하나의 과제 정보가 매칭되어 있는 상태를 지칭하기 위해 사용될 수 있다. 서버(100)는 특정 과제 정보와 특정 솔루션 정보를 매칭시키고, 매칭된 두 정보를 메모리(130) 등의 저장 장치에 저장할 수 있다. 본 개시에서 하나의 과제 정보에는 적어도 하나의 솔루션 정보가 대응될 수 있다. 즉, "과제 정보"와 "솔루션 정보"는 일대다(one-to-many)의 데이터 관계를 가질 수 있다. 일 실시예에서, 과제 정보가 복수의 솔루션 정보와 대응되는 경우, 복수의 솔루션 정보에 포함된 복수의 소스 코드들은 둘 이상의 서로 다른 언어로 작성된 소스 코드일 수 있다.
본 개시의 일 실시예에 따르면 솔루션 정보에 포함된 특정 소스 코드는 해당 솔루션 정보와 대응되는 과제 정보가 포함하는 적어도 하나의 사전 결정된 조건 모두를 만족하는 소스 코드일 수 있다. 예를 들어, 과제 정보가 지시하는 특정 과제가 "첫번째 인자로 주어지는 정수와 두번째 인자로 주어지는 정수의 차이 값을 반환하는 함수 생성"이고, 과제 정보에 포함된 두 검증 조건이 각각 "입력 값: (10, 4), 출력 값: 6" 및 "입력 값: (10000, 10000), 출력 값: 0"이라고 가정할 수 있다. 이때, 해당 과제 정보와 대응되는 솔루션 정보의 소스 코드는 위의 두 조건을 모두 만족시키는 소스 코드일 수 있다.
본 개시의 일 실시예에 따르면 서버(100)는 사용자 단말(200)로부터 적어도 하나의 소스 코드를 획득하고, 획득된 적어도 하나의 소스 코드 각각이 적어도 하나의 검증 조건을 모두 만족하는 지 여부를 판단할 수 있다. 또한 서버(100)는 이러한 판단의 결과에 기초하여 사용자 단말(200)로부터 획득된 적어도 하나의 소스 코드 중에서 솔루션 정보에 포함될 특정 소스 코드를 결정할 수 있다. 구체적으로, 프로세서(110)는 특정 사용자 단말(200)로부터 획득된 적어도 하나의 소스 코드 각각이 사전 결정된 조건(즉, 검증 조건)을 만족하는 지 여부를 판단하기 위해 각각의 소스 코드를 컴파일하고, 컴파일 결과를 해당 특정 사용자 단말(200)로 전달할 수 있다. 이때, 만약 획득된 적어도 하나의 소스 코드가 서로 다른 둘 이상의 언어로 작성된 경우 프로세서(110)는 각 언어에 따른 컴파일을 수행할 수 있다. 프로세서(110)는 사용자로부터 획득된 적어도 하나의 소스 코드에 각각에 대한 컴파일 결과를 확인하고, 적어도 하나의 검증 조건을 모두 만족하는 소스 코드를 솔루션 정보에 포함될 특정 소스 코드로 결정할 수 있다.
다음으로, 프로세서(110)는 단계 S430에서 획득된 솔루션 정보를 제1 사용자단말로 전달할 수 있다(S440). 이를 통해, 제1 사용자는 특정 과제를 지시하는 과제 정보를 서버(100)로 전달하고, 해당 특정 과제를 해결하는 솔루션 정보를 획득할 수 있다. 또한, 프로세서(110)는 과제 정보 및 해당 과제 정보에 대한 적어도 하나의 솔루션 정보를 포함하는 데이터(이하, "과제-솔루션 정보 쌍(pair)"라고도 함)를 저장할 수 있다.
상술한 바와 같이 제1 사용자는 소스 코드의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 서버(100)로 전달(또는 업로드)함으로써 해당 특정 과제를 해결하는 소스 코드를 다른 사용자로부터 획득할 수 있다.
본 개시의 일 실시예에 따르면 프로세서(110)는 단계 S440의 수행 이후 제1 사용자 단말로부터 솔루션 정보에 대한 평가 정보를 획득할 수 있다. 즉, 제1 사용자는 제1 사용자 단말을 통해 서버(100)로부터 특정 과제에 대한 솔루션 정보를 획득한 후, 해당 솔루션 정보의 품질 또는 성능을 평가하는 평가 정보를 생성하고 생성된 평가 정보를 서버(100)로 전달할 수 있다. 서버(100)는 사용자 단말(200)로부터 획득된 평가 정보를 메모리(130)에 저장할 수 있다. 서버(100)는 복수의 사용자들 각각에 대한 평가 정보를 집계할 수 있다. 예를 들어, 평가 정보는 "1 내지 5" 또는 "0 내지 100" 등의 소정 구간에 포함되는 평가 점수를 포함한다고 가정할 수 있다. 이때, 서버(100)는 사용자 단말(200)로부터 솔루션 정보에 대한 평가 점수를 획득한 후, 평가 점수를 해당 솔루션 정보에 포함된 소스 코드를 작성한 사용자와 대응시켜 저장할 수 있다. 서버(100)는 각 사용자에게 대응되도록 저장된 하나 이상의 평가 점수의 평균값(이하, "평균 평가 점수"이라고도 함)을 산출할 수 있다.
본 개시의 일 실시예에 따르면, 프로세서(110)는 과제 정보에 의해 지시되는 특정 과제에 관한 카테고리 정보를 복수의 사용자들 중 적어도 하나의 사용자의 사용자 단말로 전달할 수 있다. 본 개시에서 "카테고리 정보"란 복수의 과제들을 소정 기준에 따라 분류한 결과, 복수의 과제들에 포함된 각각의 과제에 대응되는 정보로서, 특정 과제가 속하는 특정 그룹을 지시하는 문자열을 적어도 하나 포함할 수 있다. 이하에서 "특정 과제에 관한 카테고리 정보"라는 표현은, "특정 과제와 대응되는 카테고리 정보" 또는 "특정 과제의 카테고리 정보" 등의 표현과 상호 교환적으로 사용될 수 있다. 예를 들어, 복수의 과제들이 "사칙 연산"과 관련된 과제들이라고 가정할 수 있다. 이때, 복수의 과제들 중 제1 그룹의 과제들은 "덧셈 연산", 제2 그룹의 과제들은 "뺄셈 연산", 제3 그룹의 과제들은 "곱셈 연산", 제4 그룹의 과제들은 "나눗셈 연산"으로 각각 분류될 수 있다. 또한, 복수의 과제들 중 하나의 특정 과제는 "사칙 연산/덧셈 연산", "사칙 연산/뺄셈 연산", "사칙 연산/곱셈 연산" 및 "사칙 연산/나눗셈 연산" 중 하나를 지시하는 문자열을 포함하는 카테고리 정보와 대응될 수 있다. 다른 예를 들어, 복수의 과제들이 "A 대학교 B 학과 숙제"와 관련된 과제들이라고 가정할 수 있다. 이때, 복수의 과제들 중 제1 그룹의 과제들은 "1학년 과정", 제2 그룹의 과제들은 "2학년 과정", 제3 그룹의 과제들은 "3학년 과정", 제4 그룹의 과제들은 "4학년 과정"으로 각각 분류될 수 있다. 또한, 복수의 과제들 중 하나의 특정 과제는 "A 대학교 B 학과 숙제/1학년 과정", "A 대학교 B 학과 숙제/2학년 과정", "A 대학교 B 학과 숙제/3학년 과정" 및 "A 대학교 B 학과 숙제/4학년 과정" 중 하나를 지시하는 문자열을 포함하는 카테고리 정보와 대응될 수 있다. 또한, 특정 과제의 카테고리 정보는 둘 이상의 서로 다른 그룹을 지시하는 문자열을 포함할 수 있다. 예를 들어, 특정 과제는 "프로그래밍 언어/파이썬", "사칙 연산/뺄셈 연산"과 같이 서로 다른 그룹을 지시하는 문자열을 포함하는 카테고리 정보와 대응될 수 있다.
본 개시의 일 실시예에 따르면 서버(100)는 특정 과제에 관한 카테고리 정보를 제1 사용자 단말로부터 획득할 수 있다. 바꿔 말하면, 제1 사용자는 사용자 단말의 입력부(240)를 통해 카테고리 정보를 서버(100)로 전달하고, 이에 따라 서버(100)는 과제 정보에 의해 지시되는 특정 과제에 관한 카테고리 정보를 획득할 수 있다.
본 개시의 다른 일 실시예에 따르면 서버(100)는 특정 과제에 관한 카테고리 정보를 이전에 획득된 적어도 하나의 과제 정보에 기초하여 소정의 연산을 수행함으로써 결정할 수 있다. 일 실시예에서, 서버(100)는 카테고리 정보의 결정 대상이 되는 과제 정보(이하, "타겟 과제 정보"라고도 함)의 키워드 집합과 이전에 획득된 적어도 하나의 과제 정보의 키워드 집합을 서로 비교하고 그 비교 결과에 따라 타겟 과제 정보에 의해 지시되는 특정 과제의 카테고리 정보를 결정할 수 있다. 이전에 획득된 적어도 하나의 과제 정보 또는 적어도 하나의 과제 정보 각각의 키워드 집합은 메모리(130)에 저장될 수 있다.
본 개시에서 "키워드 집합"은 문서 또는 문자의 집합에 대해 소정의 키워드 추출 방법(예를 들어, TextRank, TF-IDF, 단어 임베딩 기반 키워드 추출 방법, 인공 신경망 기반 자연어 처리 방법 등)을 적용함으로써 추출되는 키워드들의 집합 또는 그룹을 지칭할 수 있다. 예를 들어, "변수 2개를 입력 받아 그 차이값을 반환하는 함수를 만들어 주세요."라는 문장에 대해 소정의 키워드 추출 방법에 따라 추출되는 키워드 집합은 ["변수", "2개", "차이값", "함수"]와 같이 예시될 수 있다.
서버(100)는 타겟 과제 정보의 키워드 집합과 이전에 획득된 적어도 하나의 과제 정보 각각의 키워드 집합 간 유사성에 기초하여 타겟 과제 정보에 의해 지시되는 특정 과제의 카테고리 정보를 결정할 수 있다. 키워드 집합 간 유사성은 예를 들어, 두 키워드 집합 내에 임계 개수 이상의 키워드가 서로 동일하게 포함되는 지 여부에 따라 판단될 수 있다. 구체적으로, 제1 과제 정보로부터 추출된 키워드 집합이 ["A", "B", "C", "D"], 제2 과제 정보로부터 추출된 키워드 집합이 ["A", "B", "C", "E"], 키워드 집합 간 유사성을 판단하기 위한 키워드 임계 개수는 3개라고 가정할 때, 제1 과제 정보의 키워드 집합과 제2 과제 정보의 키워드 집합에는 3개의 키워드(즉, "A", "B", "C")가 동일하게 포함되고 이는 임계 개수인 3개 이상이므로 제1 과제 정보의 키워드 집합과 제2 과제 정보의 키워드 집합은 서로 유사하다고 판단될 수 있다. 제1 과제 정보 및 제2 과제 정보 각각의 키워드 집합이 서로 유사하다고 판단되는 경우, 서버(100)는 제1 과제 정보 및 제2 과제 정보 중 하나의 과제 정보의 카테고리 정보에 기초하여 다른 하나의 과제 정보의 카테고리 정보를 결정할 수 있다. 예를 들어, 제1 과제 정보가 타겟 과제 정보이고 제2 과제 정보가 이전에 획득된 하나의 과제 정보를 지칭한다고 가정할 때, 서버(100)는 제2 과제 정보의 카테고리 정보를 이용하여 제1 과제 정보의 카테고리 정보를 설정 또는 생성할 수 있다.
도 5는 본 개시의 일 실시예에 따라 서버(100)가 하나의 사용자로부터 획득한 과제 정보를 복수의 사용자들 중 적어도 하나의 사용자와 매칭하는 동작에 관한 순서도이다. 도 5를 참조하여 설명되는 매칭 방법의 각 단계는 도 4의 단계 S420에 포함될 수 있다.
프로세서(110)는 제1 사용자 단말로부터 획득된 과제 정보를 복수의 사용자들 중 적어도 하나의 사용자의 사용자 단말로 전달할 수 있다(S510). 프로세서(110)는 전체 사용자들 중 과제 정보를 전달할 일 실시예에서, 프로세서(110)는 서버(100)와 통신이 가능한 모든 사용자 단말(200)로 과제 정보를 전달함으로써 복수의 사용자들 중 적어도 하나의 사용자의 사용자 단말로 과제 정보를 전달할 수 있다. 다른 일 실시예에서, 프로세서(110)는 소정의 방식에 따라 과제 정보를 전달받을 복수의 사용자들을 결정하고, 결정된 복수의 사용자들에게 과제 정보를 전달할 수 있다.
본 개시에 따라 과제 정보를 전달받을 복수의 사용자들을 결정하는 일 실시예에서, 복수의 사용자들은 보상 금액에 관한 조건을 만족하는 사용자들일 수 있다. 이 경우, 프로세서(110)는 제1 사용자 단말로부터 보상 금액을 지시하는 보상 정보를 획득할 수 있다. 본 개시에 따른 보상 금액은 과제 정보에 의해 지시되는 특정 과제를 임의의 사용자가 해결한 경우 해당 사용자가 받을 수 있는 금액을 의미할 수 있다. 보상 금액은 과제 정보에 의해 지시되는 과제의 해결 난이도, 소요 시간 등을 고려하여 제1 사용자에 의해 결정될 수 있다. 서버(100)는 복수의 사용자들 각각의 보상 금액에 관한 조건을 메모리(130)에 저장할 수 있다. 예를 들어, 제1 사용자로부터 과제 정보와 함께 전달된 보상 정보에 의해 지시되는 보상 금액이 "$100"이라고 가정한다. 이때, 서버(100)에 의해 제1 사용자로부터 획득된 과제 정보를 전달받는 복수의 사용자들은 전체 사용자들 중에서 보상 금액에 관한 조건이 "$100"를 허용하는 조건(예를 들어, "보상 금액 $20 이상" 또는 "보상 금액 $100 이상")을 가지는 사용자들일 수 있다.
본 개시에 따라 과제 정보를 전달받을 복수의 사용자들을 결정하는 일 실시예에서, 복수의 사용자들은 과제 정보에 포함된 언어 정보에 의해 지시되는 언어를 사용할 수 있는 개발자(Developer)들일 수 있다. 이 경우, 과제 정보는 소스 코드의 언어를 지시하는 언어 정보를 포함할 수 있고, 복수의 사용자들은 자신이 사용할 수 있는 언어의 종류를 서버(100)에 등록할 수 있다. 예를 들어, 제1 사용자로부터 전달된 과제 정보에 포함된 언어 정보가 지시하는 소스 코드의 언어가 "파이썬"이라고 가정한다. 이때, 서버(100)에 의해 제1 사용자로부터 획득된 과제 정보를 전달받는 복수의 사용자들은 전체 사용자들 중에서 사용 언어로 "파이썬"을 포함하는 사용자들일 수 있다.
본 개시에 따라 과제 정보를 전달받을 복수의 사용자들을 결정하는 일 실시예에서, 복수의 사용자들은 평가 정보에 대한 조건을 만족하는 사용자들일 수 있다. 이 경우, 프로세서(110)는 제1 사용자 단말로부터 평가 정보에 대한 조건을 획득할 수 있다. 예를 들어, 평가 정보에 대한 조건이 "평점이 4점 이상(만점 5점)" 또는 "평점이 90점 이상(만점 100점)" 등과 같이 표현된다고 가정할 수 있다. 이때, 서버(100)는 메모리(130)에 저장된 전체 사용자들 각각의 평점에 기초하여 평가 정보에 대한 조건을 만족하는 복수의 사용자들을 결정할 수 있다.
다음으로, 프로세서(110)는 복수의 사용자들 중 적어도 하나의 사용자의 사용자 단말로부터 과제 정보를 선택하는 사용자 입력을 획득할 수 있다(S520). 이하 도 5를 참조하여 설명되는 실시예에서는 복수의 사용자들 중 하나의 사용자로부터 사용자 입력을 획득하였다고 가정하고, 그 하나의 사용자는 편의상 제2 사용자로 지칭될 수 있다. 예를 들어, 프로세서(110)는 제2 사용자 단말로부터 과제 정보를 선택하는 사용자 입력을 획득할 수 있다. 사용자는 사용자 단말(200)의 출력부(250)를 통해 표시되는 하나 이상의 과제 정보 중 특정 과제 정보를 입력부(240)를 통해 선택할 수 있고, 선택한 특정 과제 정보에 대한 사용자 입력을 서버(100)로 전달할 수 있다. 즉, 서버(100)는 특정 과제 정보를 선택하는 사용자 입력을 사용자 단말(200)로부터 획득할 수 있다.
다음으로, 프로세서(110)는 획득된 사용자 입력에 기초하여 사용자와 과제 정보를 매칭시킬 수 있다(S530). 과제 정보가 적어도 하나의 사용자와 매칭되는 경우, 프로세서(110)는 해당 과제 정보에 대한 추가 매칭 동작을 중단할 수 있다. 프로세서(110)는 과제 정보와 사용자의 매칭 내역을 메모리(130)에 저장할 수 있다.
도 6은 본 개시의 일 실시예에 따라 서버(100)가 하나의 단일 과제 정보에 대해 둘 이상의 사용자 단말들 각각으로부터 솔루션 정보를 획득하는 동작에 관한 흐름도이다. 이하 도 6을 참조하여 설명되는 이하의 실시예에서는 복수의 사용자들 중 서로 다른 두 사용자로부터 각각 솔루션 정보를 획득하였다고 가정하고, 그 두 사용자는 편의상 각각 제2 사용자, 제3 사용자로 지칭될 수 있다고 가정한다.
서버(100)는 제1 사용자 단말(200-1)로부터 특정 과제를 지시하는 과제 정보를 획득할 수 있다(S610). 과제 정보를 수신한 서버(100)는 해당 과제 정보를 복수의 사용자들 중 적어도 하나의 사용자의 사용자 단말로 전달할 수 있다(S620). 예를 들어, 서버(100)는 과제 정보를 복수의 사용자들 중 제2 사용자의 사용자 단말(제2 사용자 단말(200-2)) 및 제3 사용자의 사용자 단말(제3 사용자 단말(200-3))로 각각 전달할 수 있다. 그 후, 서버(100)는 제2 사용자 단말(200-2)로부터 제1 사용자 입력을 획득(S631)하고, 제3 사용자 단말(200-3)로부터 제2 사용자 입력을 획득(S633)할 수 있다. 이에 따라 서버(100)는 과제 정보와 제2 사용자 및 제3 사용자를 매칭할 수 있다(S640). 상술한 단계 S610 내지 S640은 도 4를 참조하여 상술한 단계 S410, 단계 S420 및 도 5를 참조하여 상술한 각 단계들과 동일 또는 유사하게 서버(100)에 의해 수행될 수 있다.
다음으로, 서버(100)는 제2 사용자 단말(200-2)로부터 제1 솔루션 정보를 획득할 수 있다(S651). 또한, 서버(100)는 제3 사용자 단말(200-3)로부터 제2 솔루션 정보를 획득할 수 있다(S653).
본 개시에 따른 일 실시예에서, 특정 과제 정보가 소스 코드의 언어를 지시하는 언어 정보를 포함할 때, 해당 과제 정보에 대응되는 솔루션 정보는 언어 정보에 의해 지시되는 언어로 작성된 소스 코드를 포함할 수 있다. 예를 들어, 언어 정보에 의해 지시되는 언어 및 솔루션 정보에 포함된 소스 코드의 언어는 동일하게 파이썬일 수 있다. 또한, 특정 과제 정보가 소스 코드의 언어를 지시하는 언어 정보를 포함하더라도, 해당 과제 정보에 대응되는 솔루션 정보는 언어 정보에 의해 지시되는 언어와 상이한 언어로 작성된 소스 코드를 포함할 수 있다. 예를 들어, 언어 정보에 의해 지시되는 언어는 파이썬이고 솔루션 정보에 포함된 소스 코드의 언어는 C++일 수 있다. 이하 도 6을 참조하여 설명되는 실시예에서, 설명의 편의상 제1 솔루션 정보는 과제 정보에 포함된 언어 정보에 의해 지시되는 언어로 작성된 소스 코드를 포함하고, 제2 솔루션 정보는 과제 정보에 포함된 언어 정보에 의해 지시되는 언어와 상이한 언어로 작성된 소스 코드를 포함한다고 가정한다.
서버(100)는 제1 솔루션 정보 및 제2 솔루션 정보를 메모리(130)에 저장할 수 있다(S660). 서버(100)는 특정 과제 정보에 대한 적어도 하나의 솔루션 정보를 상술한 바와 같이 "과제-솔루션 정보 쌍" 형태로 메모리(130)에 저장함으로써, 이후에 특정 과제 정보와 동일하거나 유사한 과제 정보가 획득되는 경우 솔루션 정보를 추가로 획득하지 않고도 획득된 과제 정보에 대응되는 솔루션 정보를 사용자에게 반환할 수 있다.
서버(100)는 제1 솔루션 정보 및 제2 솔루션 정보 중 적어도 하나의 솔루션 정보를 제1 사용자 단말(200-1)로 전달할 수 있다(S670). 일 실시예에서, 과제 정보가 언어 정보를 포함하지 않을 때, 프로세서(110)는 제1 솔루션 정보 및 제2 솔루션 정보를 모두 제1 사용자 단말(200-1)로 전달할 수 있다. 다른 일 실시예에서, 과제 정보가 소스 코드의 언어를 지시하는 언어 정보를 포함할 때, 프로세서(110)는 제1 솔루션 정보를 제1 사용자 단말(200-1)로 전달할 수 있다. 또한 다른 일 실시예에서, 과제 정보가 소스 코드의 언어를 지시하는 언어 정보를 포함하더라도, 프로세서(110)는 제1 솔루션 정보 및 제2 솔루션 정보를 모두 제1 사용자 단말(200-1)로 전달할 수 있다. 상술한 몇몇 실시예들에서 서버(100)가 서로 다른 언어로 작성된 소스 코드를 사용자에게 제공하는 경우, 사용자는 희망하는 과제를 해결하기 위한 소스 코드를 다양한 언어에 따라 획득할 수 있다.
본 개시의 일 실시예에 따르면, 서버(100)는 과제 정보를 전달하는 사용자(예를 들어, 제1 사용자)의 사용자 단말로부터 과제 정보에 의해 지시되는 특정 과제를 해결하기 위해 요구되는 비공개 정보를 획득하고, 해당 과제 정보와 매칭된 사용자(예를 들어, 제2 사용자)의 사용자 단말로 비공개 정보를 전달할 수 있다. 비공개 정보는 예를 들어, 제1 사용자가 비공개(private) 방식으로 관리하는 소스 코드 또는 그러한 소스 코드로 접근할 수 있는 인터넷 주소 등을 포함할 수 있다. 이를 통해, 과제 정보와 매칭된 사용자는 비공개 소스 코드를 포함하여 과제 정보에 의해 지시되는 특정 과제를 해결하는 특정 소스 코드를 작성할 수 있다.
도 7은 본 개시의 다른 일 실시예에 따라 서버(100)가 하나의 사용자로부터 과제 정보를 획득한 후 해당 과제 정보가 지시하는 특정 과제에 대한 솔루션 정보를 해당 사용자에게 전달하는 동작에 관한 순서도이다. 프로세서(110)는 제1 사용자 단말로부터 소스 코드의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득할 수 있다(S710). 단계 S710은 도 4를 참조하여 전술한 S410과 동일 또는 유사하게 서버(100)에 의해 수행될 수 있다.
다음으로, 프로세서(110)는 메모리(130)에 저장된 적어도 하나의 과제-솔루션 정보 쌍에 기초하여 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션 정보를 결정할 수 있다(S720). 구체적으로, 프로세서(110)는 사용자로부터 획득되고 솔루션 정보가 요구되는 과제 정보(이하, "타겟 과제 정보"라고도 함)와 메모리(130)에 저장된 하나 이상의 과제-솔루션 정보 쌍의 과제 정보(이하, "참조 과제 정보"라고도 함)를 비교하여 타겟 과제 정보에 의해 지시되는 특정 과제를 해결하기 위한 솔루션 정보를 결정할 수 있다. 예를 들어, 프로세서(110)는 타겟 과제 정보에 포함된 설명문과 적어도 하나의 참조 과제 정보에 포함된 설명문을 비교하여 두 설명문이 동일하거나 일정 수준 이상 유사한 경우, 해당 참조 과제 정보를 포함하는 과제-솔루션 정보 쌍의 솔루션 정보를 타겟 과제 정보에 의해 지시되는 특정 과제를 해결하기 위한 솔루션 정보로 결정할 수 있다. 다른 예를 들어, 프로세서(110)는 타겟 과제 정보의 키워드 집합과 참조 과제 정보의 키워드 집합을 비교하여 키워드 집합이 서로 유사한 경우, 해당 참조 과제 정보를 포함하는 과제-솔루션 정보 쌍의 솔루션 정보를 타겟 과제 정보에 의해 지시되는 특정 과제를 해결하기 위한 솔루션 정보로 결정할 수 있다. 복수의 과제 정보 각각의 키워드 집합 간 유사성을 산출하는 방법에 관하여는 전술한 바, 중복된 내용의 설명을 생략한다.
다음으로, 프로세서(110)는 결정된 솔루션 정보를 제1 사용자 단말로 전달할 수 있다(S730). 도 7을 참조하여 설명되는 본 개시의 일 실시예에 따르면, 서버(100)는 이전에 획득된 과제 정보에 대해 적어도 하나의 솔루션 정보를 매칭하고 이를 과제-솔루션 정보 쌍 형태로 메모리(130)에 저장함으로써, 특정 사용자로부터 새롭게 획득된 과제 정보가 이전에 획득된 과제 정보와 같거나 유사한 경우, 다른 사용자의 해결을 기다릴 필요 없이 곧바로 특정 사용자에게 솔루션 정보를 제공할 수 있는 효과를 갖는다.
본 개시에 따른 방법들은 컴퓨터로 구현된 방법들일 수 있다. 본 개시에서, 해당 방법들의 각 단계가 소정의 순서대로 도시되고 설명되었지만, 각 단계들은 순차적으로 수행되는 것 이외에, 본 개시에 따라 임의로 조합될 수 있는 순서로 수행될 수도 있다. 일 실시예에서, 적어도 일부의 단계가 병렬적, 반복적 또는 휴리스틱하게 수행될 수 있다. 본 개시는 해당 방법들에 변화 또는 수정을 가하는 것을 제외하지 않는다. 일 실시예에서, 적어도 일부의 단계가 생략되거나, 다른 단계가 추가될 수 있다.
본 개시의 다양한 실시예들은 기기(machine)가 읽을 수 있는 기록 매체(machine-readable recording medium)에 기록된 소프트웨어로 구현될 수 있다. 소프트웨어는 상술한 본 개시의 다양한 실시예들을 구현하기 위한 소프트웨어일 수 있다. 소프트웨어는 본 개시가 속하는 기술분야의 프로그래머들에 의해 본 개시의 다양한 실시예들로부터 추론될 수 있다. 예를 들어 소프트웨어는 기기가 읽을 수 있는 명령(예: 코드 또는 코드 세그먼트) 또는 프로그램일 수 있다. 기기는 기록 매체로부터 호출된 명령어에 따라 동작이 가능한 장치로서, 예를 들어 컴퓨터일 수 있다. 일 실시예에서, 기기는 본 개시의 실시예들에 따른 무인 단말기(100) 내지 서버(110)일 수 있다. 일 실시예에서, 기기의 프로세서는 호출된 명령을 실행하여, 기기의 구성요소들이 해당 명령에 해당하는 기능을 수행하게 할 수 있다. 기록 매체는 기기에 의해 읽혀질 수 있는, 데이터가 저장되는 모든 종류의 기록 매체(recording medium)를 의미할 수 있다. 기록 매체는, 예를 들어 ROM, RAM, CD-ROM, 자기 테이프, 플로피 디스크, 광 데이터 저장 장치 등을 포함할 수 있다. 일 실시예에서, 기록 매체는 네트워크로 연결된 컴퓨터 시스템 등에 분산된 형태로서 구현될 수도 있다. 소프트웨어는 컴퓨터 시스템 등에 분산되어 저장되고, 실행될 수 있다. 기록 매체는 비일시적(non-transitory) 기록 매체일 수 있다. 비일시적 기록 매체는, 데이터가 반영구적 또는 임시적으로 저장되는 것과 무관하게 실재하는 매체(tangible medium)를 의미하며, 일시적(transitory)으로 전파되는 신호(signal)를 포함하지 않는다.
이상 다양한 실시예들에 의해 본 개시의 기술적 사상이 설명되었지만, 본 개시의 기술적 사상은 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 이해할 수 있는 범위에서 이루어질 수 있는 다양한 치환, 변형 및 변경을 포함한다. 또한, 그러한 치환, 변형 및 변경은 첨부된 청구범위 내에 포함될 수 있는 것으로 이해되어야 한다. 본 개시에 따른 실시예들은 서로 조합될 수 있다. 각 실시예들은 경우의 수에 따라 다양하게 조합될 수 있으며, 조합되어 만들어진 실시예 역시 본 개시의 범위에 속한다.

Claims (20)

  1. 적어도 하나의 외부 장치와 통신하는 통신 회로;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고,
    상기 하나 이상의 프로세서는,
    복수의 사용자들 중 제1 사용자의 장치로부터 소스 코드(source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득하고,
    상기 과제 정보를 상기 복수의 사용자들 중 제2 사용자와 매칭하고,
    상기 제2 사용자의 장치로부터 상기 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션(solution) 정보를 획득하고,
    상기 솔루션 정보를 상기 제1 사용자의 장치로 전달하도록 구성되고,
    상기 과제 정보는 상기 특정 과제의 해결 여부를 검증하기 위한 적어도 하나의 사전 결정된 조건을 포함하는, 전자 장치.
  2. 제1항에 있어서,
    상기 사전 결정된 조건은,
    입력 값 및 상기 입력 값에 대한 예상 출력 값에 기초하여 조건의 만족 여부가 결정되는 조건인, 전자 장치.
  3. 제1항에 있어서,
    상기 특정 소스 코드는,
    상기 적어도 하나의 사전 결정된 조건 모두를 만족하는 소스 코드인, 전자 장치.
  4. 제3항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 제2 사용자의 장치로부터 적어도 하나의 소스 코드를 획득하고,
    상기 적어도 하나의 소스 코드 각각에 대해 상기 적어도 하나의 사전 결정된 조건 모두를 만족하는 지 여부를 판단하고,
    상기 판단의 결과에 기초하여 상기 적어도 하나의 소스 코드 중에서 상기 특정 소스 코드를 결정하도록 구성되는, 전자 장치.
  5. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 특정 과제에 관한 카테고리 정보를 상기 복수의 사용자들 중 적어도 하나의 사용자의 장치로 전달하도록 구성되는, 전자 장치.
  6. 제5항에 있어서,
    상기 카테고리 정보는,
    상기 하나 이상의 프로세서가 이전에 획득된 적어도 하나의 과제 정보에 기초하여 소정의 연산을 수행함으로써 결정되는, 전자 장치.
  7. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 과제 정보를 상기 복수의 사용자들 중 적어도 하나의 사용자의 장치로 전달하고,
    상기 제2 사용자의 장치로부터 상기 과제 정보를 선택하는 사용자 입력을 획득하고,
    상기 사용자 입력에 따라 상기 제2 사용자를 상기 과제 정보와 매칭하도록 구성되는, 전자 장치.
  8. 제7항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 제1 사용자의 장치로부터 보상 금액을 지시하는 보상 정보를 획득하도록 구성되고,
    상기 적어도 하나의 사용자는,
    상기 보상 금액에 관한 조건을 만족하는 사용자인, 전자 장치.
  9. 제1항에 있어서,
    상기 과제 정보는 작성이 요청되는 소스 코드의 언어를 지시하는 언어 정보를 더 포함하고,
    상기 특정 소스 코드는 상기 언어 정보에 의해 지시되는 언어로 작성된 소스 코드인, 전자 장치.
  10. 제1항에 있어서,
    상기 과제 정보는 작성이 요청되는 소스 코드의 언어를 지시하는 언어 정보를 더 포함하고,
    상기 하나 이상의 프로세서는,
    상기 복수의 사용자들 중 제3 사용자의 장치로부터 상기 언어 정보에 의해 지시되는 언어와 상이한 언어로 작성된 특정 소스 코드를 포함하는 솔루션 정보를 획득하도록 구성되는, 전자 장치.
  11. 제1항에 있어서,
    상기 하나 이상의 프로세서는,
    상기 제1 사용자의 장치로부터 상기 특정 과제를 해결하기 위해 요구되는 비공개 정보를 획득하고,
    상기 비공개 정보를 상기 제2 사용자의 장치로 전달하도록 구성되는, 전자 장치.
  12. 적어도 하나의 외부 장치와 통신하는 통신 회로;
    하나 이상의 프로세서; 및
    상기 하나 이상의 프로세서에 의한 실행 시, 상기 하나 이상의 프로세서가 연산을 수행하도록 하는 명령들이 저장된 하나 이상의 메모리를 포함하고,
    상기 하나 이상의 메모리는 과제 정보 및 해당 과제 정보에 대한 적어도 하나의 솔루션(solution) 정보를 포함하는 적어도 하나의 과제-솔루션 정보 쌍을 저장하고,
    상기 하나 이상의 프로세서는,
    제1 사용자의 장치로부터 소스 코드(source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득하고,
    상기 메모리에 저장된 상기 적어도 하나의 과제-솔루션 정보 쌍에 기초하여 상기 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션 정보를 결정하고,
    상기 솔루션 정보를 상기 제1 사용자의 장치로 전달하도록 구성되고,
    상기 과제 정보는 상기 특정 과제의 해결 여부를 검증하기 위한 적어도 하나의 사전 결정된 조건을 포함하는, 전자 장치.
  13. 적어도 하나의 외부 장치와 통신하는 통신 회로, 하나 이상의 프로세서 및 상기 하나 이상의 프로세서에 의해 실행되는 적어도 하나의 명령을 저장하는 하나 이상의 메모리를 포함하는 전자 장치에 의해 수행되는 방법으로서,
    복수의 사용자들 중 제1 사용자의 장치로부터 소스 코드(source code)의 작성이 요구되는 특정 과제를 지시하는 과제 정보를 획득하는 단계;
    상기 과제 정보를 상기 복수의 사용자들 중 제2 사용자와 매칭하는 단계;
    상기 제2 사용자의 장치로부터 상기 특정 과제를 해결하기 위해 작성된 특정 소스 코드를 포함하는 솔루션(solution) 정보를 획득하는 단계; 및
    상기 솔루션 정보를 상기 제1 사용자의 장치로 전달하는 단계를 포함하고,
    상기 과제 정보는 상기 특정 과제의 해결 여부를 검증하기 위한 적어도 하나의 사전 결정된 조건을 포함하는, 방법.
  14. 제13항에 있어서,
    상기 특정 소스 코드는,
    상기 적어도 하나의 사전 결정된 조건 모두를 만족하는 소스 코드인, 방법.
  15. 제14항에 있어서,
    상기 제2 사용자의 장치로부터 적어도 하나의 소스 코드를 획득하는 단계;
    상기 적어도 하나의 소스 코드 각각에 대해 상기 적어도 하나의 사전 결정된 조건 모두를 만족하는 지 여부를 판단하는 단계; 및
    상기 판단의 결과에 기초하여 상기 적어도 하나의 소스 코드 중에서 상기 특정 소스 코드를 결정하는 단계를 더 포함하는, 방법.
  16. 제13항에 있어서,
    상기 특정 과제에 관한 카테고리 정보를 상기 복수의 사용자들 중 적어도 하나의 사용자의 장치로 전달하는 단계를 더 포함하는, 방법.
  17. 제13항에 있어서,
    상기 과제 정보를 상기 제2 사용자와 매칭하는 단계는,
    상기 과제 정보를 상기 복수의 사용자들 중 적어도 하나의 사용자의 장치로 전달하는 단계;
    상기 제2 사용자의 장치로부터 상기 과제 정보를 선택하는 사용자 입력을 획득하는 단계; 및
    상기 사용자 입력에 따라 상기 제2 사용자를 상기 과제 정보와 매칭하는 단계를 포함하는, 방법.
  18. 제13항에 있어서,
    상기 과제 정보는 작성이 요청되는 소스 코드의 언어를 지시하는 언어 정보를 더 포함하고,
    상기 특정 소스 코드는 상기 언어 정보에 의해 지시되는 언어로 작성된 소스 코드인, 방법.
  19. 제13항에 있어서,
    상기 과제 정보는 작성이 요청되는 소스 코드의 언어를 지시하는 언어 정보를 더 포함하고,
    상기 방법은,
    상기 복수의 사용자들 중 제3 사용자의 장치로부터 상기 언어 정보에 의해 지시되는 언어와 상이한 언어로 작성된 특정 소스 코드를 포함하는 솔루션 정보를 획득하는 단계를 더 포함하는, 방법.
  20. 제13항에 있어서,
    상기 제1 사용자의 장치로부터 상기 특정 과제를 해결하기 위해 요구되는 비공개 정보를 획득하는 단계; 및
    상기 비공개 정보를 상기 제2 사용자의 장치로 전달하는 단계를 더 포함하는, 방법.
PCT/KR2022/014334 2022-09-26 2022-09-26 과제에 대한 솔루션의 제공 WO2024071455A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/KR2022/014334 WO2024071455A1 (ko) 2022-09-26 2022-09-26 과제에 대한 솔루션의 제공

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/KR2022/014334 WO2024071455A1 (ko) 2022-09-26 2022-09-26 과제에 대한 솔루션의 제공

Publications (1)

Publication Number Publication Date
WO2024071455A1 true WO2024071455A1 (ko) 2024-04-04

Family

ID=90478273

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2022/014334 WO2024071455A1 (ko) 2022-09-26 2022-09-26 과제에 대한 솔루션의 제공

Country Status (1)

Country Link
WO (1) WO2024071455A1 (ko)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050121368A (ko) * 2004-06-22 2005-12-27 이정욱 온라인 개발 지원 시스템 및 방법
KR101523031B1 (ko) * 2012-01-26 2015-05-27 심플렉스 인터넷 주식회사 어플리케이션 거래 시스템
KR20190074697A (ko) * 2017-12-20 2019-06-28 주식회사 함샤우트 개발 프로젝트 중개 시스템 및 이를 이용한 중개 방법
KR102004489B1 (ko) * 2019-01-21 2019-07-26 주식회사 종달랩 개발자의 코드 결과물을 이용하여 개발자의 능력을 자동으로 분석하고 이를 기반으로 개발자를 추천하는 개발자 추천 아웃소싱 시스템
KR20220085290A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 소프트웨어 검증 방법 및 이를 위한 장치

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20050121368A (ko) * 2004-06-22 2005-12-27 이정욱 온라인 개발 지원 시스템 및 방법
KR101523031B1 (ko) * 2012-01-26 2015-05-27 심플렉스 인터넷 주식회사 어플리케이션 거래 시스템
KR20190074697A (ko) * 2017-12-20 2019-06-28 주식회사 함샤우트 개발 프로젝트 중개 시스템 및 이를 이용한 중개 방법
KR102004489B1 (ko) * 2019-01-21 2019-07-26 주식회사 종달랩 개발자의 코드 결과물을 이용하여 개발자의 능력을 자동으로 분석하고 이를 기반으로 개발자를 추천하는 개발자 추천 아웃소싱 시스템
KR20220085290A (ko) * 2020-12-15 2022-06-22 현대오토에버 주식회사 소프트웨어 검증 방법 및 이를 위한 장치

Similar Documents

Publication Publication Date Title
US11373047B2 (en) Method, system, and computer program for artificial intelligence answer
Sumaray et al. A comparison of data serialization formats for optimal efficiency on a mobile platform
CN110377289A (zh) 一种数据解析方法、装置、介质和电子设备
CN108897612A (zh) 路由跳转的方法和装置
CN111159220B (zh) 用于输出结构化查询语句的方法和装置
WO2021112463A1 (ko) 기업을 위한 정보 제공 장치 및 방법
JP2023036681A (ja) タスク処理方法、処理装置、電子機器、記憶媒体及びコンピュータプログラム
US20180314683A1 (en) Method and device for processing natural language
WO2024071455A1 (ko) 과제에 대한 솔루션의 제공
CN111124541B (zh) 一种配置文件的生成方法、装置、设备及介质
CN111506904B (zh) 漏洞在线修复的方法和装置
CN111752644A (zh) 接口模拟方法、装置、设备及存储介质
US20230141932A1 (en) Method and apparatus for question answering based on table, and electronic device
WO2022163985A1 (ko) 인공지능 추론모델을 경량화하는 방법 및 시스템
CN114546370A (zh) 一种数据对接方法及相关装置
CN111539200B (zh) 一种生成富文本的方法、装置、介质和电子设备
CN116263690A (zh) 虚拟机从外部系统读取数据及相关写出数据的方法和装置
CN113312900A (zh) 数据校验的方法和装置
CN111626045A (zh) 字符长度计算方法、装置及电子设备
CN112306493A (zh) 热修复补丁生成方法、装置、存储介质及计算机设备
CN111078230A (zh) 一种代码生成方法和装置
WO2016043493A1 (ko) 애플리케이션을 생성 및 제공하기 위한 방법, 서버 및 컴퓨터 프로그램
WO2023075198A1 (ko) 대화 시스템에서, 슬롯을 추출하기 위한 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체
CN109857838A (zh) 用于生成信息的方法和装置
WO2024117383A1 (ko) 애플리케이션의 성능을 측정하는 장치 및 방법

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 17928479

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 22961058

Country of ref document: EP

Kind code of ref document: A1